MovableTypeで、BerkeleyDB から MySQL へのデータ移行

 MovableTypeを使っているユーザーから、今使っているサーバーは遅いので、なんとかならないか? という声を聞いた。
 たしかにサーバーそのものの処理速度の問題もあるけれど、データ量が増えてくるとBerkeleyDBだとだんだん遅くなってくるそうなので、この際なので MySQL に移行することにした。

 既にBerkeleyDBで使い続けてしまった人の場合は、どうやってデータを移行すればいいのだろうか? サーチエンジンで探すと、経験者の体験談がたくさん出てきたので、これは何とかなるだろうと思った。

 データ移行には、「mt-db2sql.cgi」というプログラムを使うらしい。
 でもどうやって手に入れれば良いのだろうか?
 「mt-db2sql.cgi 入手」という2つのキーワードで探すと、答えが出てきた。
 http://www.movabletype.org/ の本家から、UPGRADE版をダウンロードすると、そこに含まれているとのことだった。

 BerkeleyDB 版を使っていたサーバーの /db フォルダ(つまり移行前データ)を、新しいサーバーにアップロードしなければいけないが、どこに配置すればよいのか分からないので、とりあえず /cgi-bin フォルダの中に「mt-db2sql.cgi」とともにアップロードしてみた。
 そして早速、これをブラウザから実行してみると、エラーが出た。

 Table 'mt_author' already exists at [絶対パス名]/mt-db2sql.cgi line 55.

 エラーメッセージの通り、テーブルが既に存在していたのが原因だと思ったので、データベースを初期化した。さて、その方法は、

Telnet で MySQL データベースにログインし、テーブル一覧を取得する。(show tables; コマンド)

そのテーブル一覧を秀丸エディタに貼り付けて、次の15行のコマンドを作って、Telnetで貼り付ければ、一括でテーブル削除する。


drop table mt_author;
drop table mt_blog;
drop table mt_category;
drop table mt_comment;
drop table mt_entry;
drop table mt_ipbanlist;
drop table mt_log;
drop table mt_notification;
drop table mt_permission;
drop table mt_placement;
drop table mt_plugindata;
drop table mt_tbping;
drop table mt_template;
drop table mt_templatemap;
drop table mt_trackback;


 そして、さきほどのコマンドをもう一度ブラウザから実行したら、今度は成功した。
 テーブル一覧を取得してみたら、元のファイルと同じだったので、無事に変換できたらしい。