mt3-logo-small.gif
ついでに、DB を BarkeleyDB から SQLiteへ変更しますたー。
事の発端は、3.2で BarkeleyDB なんてありえないってな話が色んなところでちらほらと。(笑) で、氏より、ロリポで SQLite が使えるよーんと甘いささやきがあったので、じゃぁいっちょ DB をコンバートしてしまえっつうことだったんですが・・・。

これが、なかなか思うようにうまく行かず。

当初、MT標準のコンバータでコンバートしてたんですけど、途中で終わっちゃって、最後まで行かず。じゃあ、3.2へアップグレードしてからコンバートすりゃうまく行くかなと思って、やってみたけどうまく行かず。そんな中、またまた氏より、(o)氏のところに良いプラグインがあるよんと言うことだったので、こいつを試してみることに。そしたら、あっさりコンバートできたもんだから、後は3.2へアップグレードするだけだなぁなんてほくそ笑んでいたら、なんだかトラックバック周りの表示がおかしい。

BarkeleyDB に戻すと問題なく表示される。でも、SQLiteにコンバートすると、駄目。なんじゃこりゃって言うことで、恐れ多くも(o)氏へ質問してみたら~・・・「そりゃぁ、あんた。トラックバックのDBが壊れてるんじゃないの?」っていう結論に達してしまったわけで。(泣)

ogawaさん、お手数をおかけして申し訳ございませんでした。ありがとうございました。

じゃぁ、これを機会にいっその事、クリーンインストールしようそうしようっていうことになったのですよ。素人の手遊びで、弄って弄って来たので、カスが結構たまってるだろうし。(笑)

で、無事完了しました。以下ロリポにおいてアップグレードじゃなくて新規インストールして DB を Barkeley から SQLiteにする手順・・・て言うか、ただのメモ書きだなこりゃ。(苦笑)


  • まずはテンプレートをバックアップ。
    ここ参照。
  • 続いて、MTのシステムとブログのアーカイブがあるデイレクトリを丸ごとローカルへ転送。
    私のばやい、システムとブログのおき場所を別ディレクトリにしてるんで・・・。BarkeleyDB の場合、何かあったら、とりあえずこいつをごそっと戻してあげれば、元に戻るんで。
  • MTへログインして、設定関連を片っ端からハードコピー。
    どういう設定になってたかを確認するのに一番手間がかからないかも。ただし、ハードコピーじゃ見えないところはもちろん手動でコピペ。(笑)
  • MT管理メニューからエントリーのエクスポート。エクスポートのやり方はこちら
    エントリー881、コメント1795、トラックバック593で2.7MBとのテキストファイルになりやしたー。
    で、ここで重要なのがテキストの文字コードと開業コード。何を隠そう、一回目は何も考えずにやったので、全然インポートしてくれなかったのですよ。なので最初へ戻って、エクスポートをやり直したという(苦笑)。私の場合、文字コードはutf-8Nで改行コードはLFでした。って言うか、一回3.2を新規インスコしてエントリーして書き出してみたら、その文字コードと改行コードだったのでそうしただけです。(笑)
  • さて、ここまでできたら、サーバー上にあるMTの既存ファイルを思い切って削除。そんでもって、MT3.2を新規でインスコ。
    インスコはロリポ公式のマニュアルをきちんと見れば苦もなくできますが、SQLite を使用する場合はこの辺が非常に参考になります。
  • 新規でDBをSQLiteに設定しインスコしたら後はエクスポートしたエントリーデータを書き戻してやるだけ。
  • まず、MT.cgiのあるディレクトリ直下にimportというディレクトリを作成。
  • そこへ、エクスポートしたエントリーデータをアップロード。
  • アップロードできたら、MTの管理画面から「読み込み/書き出し」をクリックし、「エントリーの投稿者を自分にする」にチェックつけて、「読み込み/書き出し」ボタンをぽちっとな。(笑)
    ひとつのブログを複数人の投稿者で運用している場合は、ここのチェックはつけちゃ駄目です。念のため。
  • これで後は全部読み込んでくれるのを待ってるだけかと思うと、そうは問屋がおろしません。(笑)
    データが大きすぎる(2.7MB)ので、一気に読んでくれません。途中で止まります。だからと言って、あわてずに。管理画面上でどこでエントリーの読み込みが止まったかわかるので、テキストエディタで検索かけて、その止まった次のエントリーから読み込むように、エクスポートしたエントリーデータを修正します。これを何回か繰り返すと、完全にデータを戻すことができます。だいたい200KBぐらいづつしか読んでくれなかった感じです。
  • エントリーデータを読み込めれば、後は、バックアップをとったテンプレートファイルをこの手順で戻すだけ。

以上、こんな感じです。

ちなみに、エントリーのインポートですが、同じデータが入ったファイルをインポートすると、重複してインポートされてしまう(同じエントリーが2個とか)ので、インポートが終わったファイルは必ず削除してください。

後、3.2で再構築時のパフォーマンスが悪い(メモリ消費が大きい)という既知の問題があるので、ここを参照してファイルを修正しておきました。


で、3.2でSQLiteにした結果ですが・・・気持ち、パフォーマンスが良くなった様なならなかったような。(笑)


参照サイト(ありがとうございました。)
■TB to 3.2-ja 再構築時のパフォーマンス(その2) by 小粋空間
■TB to MT 3.2でrecently_commented_onとBerkeleyDBに嵌っている人が多い件について by Ogawa::Memoranda
■TB to インストールしよう(ロリポップ編) Ver3.2-ja対応版 – SQLiteバージョン by MovableTypeで行こう!
■TB to Movable Type 3.2アップグレードの際にBerkeley DBから他のデータベースに変える手順 by The blog of H.Fujimoto