MovableType3(SQLite)からMovableType4(MySQL5.1)への移行

サーバの引っ越しに合わせて、まず念頭にあったのはMovableTypeのバージョンアップでした。MovableType5が出るということで、本来ならばそれに合わせたバージョンアップにすべきなんでしょうが、なにぶん新バージョンは未知数。上手く軽快に動いてくれれば良いですが、それは今はまだわかりませんし、うちの膨大なエントリをインポートしてきちんと動くかもまた別問題。そういうわけで、きちんとしたMySQLと組み合わせると実はSQLiteより軽快に動くMovableType4を採用することにしました。

それに当たって新サーバではMySQLのバージョンを4ではなく5.1に変更しました。さくらインターネットでは暫く前から5.1が選択可能になってはいたのですが、一度DBのリセットが必要なため二の足を踏んでいたのですね。今回、引っ越しと言うことで有無を言わさずリセットになるので良い機会だと。


以上をふまえて、今回の移行の概要は以下の通りになります。


移行前

  • MovableType 3.36
  • SQLite
  • 移行対象データ数: 6,734(公開6,686 / 下書き48)

移行先

  • MovableType 4.261
  • MySQL 5.1


以下、この移行に伴ういくつかの問題点とその解決策です。

最初の手順 … 旧ブログからのデータエクスポート

もし旧ブログがMySQLであれば、dumpデータの移行だけで済んでいたかも知れませんが、なにぶんSQLiteだったため、データのエクスポートが必要でした。いや、本当は変換も出来るのかも知れませんが、テキスト内容に一括で変換を加えたい部分もあった(画像ディレクトリなど)ので、エクスポートが都合が良かったのですね。

エクスポートしたデータは24.7MB。案外大したことありません。テキストデータならこんなもんでしょう。これを一気にインポートしようと試みましたが、当然出来るわけもなく、20,000行程度で区切りながらファイルを16分割して何とかインポート完了。




問題点その1: タグがエクスポートされていない!

タグクラウドの書き出しをしようとしたところで初めて気づきましたが、MovableTypeのエクスポートはタグ情報を書き出してくれないんですね…これはダメだと思ってインデックステンプレートを使って書き出す方法を考えましたが、それだと公開されていないエントリは書き出されないので移行データとしては役に立ちません。

MovableTypeのインポート/エクスポート用ライブラリである、「lib/MT/ImportExport.pm」を見てみると、タグが書き出されるべき部分(516行目あたり)がこうなっています。

DATE: