MovableType4(MT4)でSQLiteからMySQLへ移行する

MovableType5への移行を見据えてMySQLへのDB移行をしました。過去に1回失敗してSQLiteに戻しましたが今回は何とか成功しましたのでメモを残しておきます。
※この記事を参考にして復元を行い、データが復元されなくても責任は取れませんので自己責任でお願いします。

僕の場合行った手順としては以下の通りです。

  1. mt-config.cgiにバックアップディレクトリを指定する記述をする。
  2. システムメニューよりブログをバックアップする。
  3. バックアップしたファイルをローカルにダウンロードする。
  4. 必要なプラグインを入れたMT(インストールしてあるMTと同じバージョン)をローカルに用意する。
  5. サーバー側のアプリケーションディレクトリをリネームして保存しておく。
  6. 新しいMTをサーバーにアップロードしてcgiファイルのパーミッションを755に設定する。
  7. mt.cgiにアクセスし、MySQL用のmt-config.cgiをウィザードで作成する。
  8. ローカルに保存したバックアップディレクトリをimportにリネームしてアップロードする。
  9. システムメニューより復元を行う。
  10. 支障のないテンプレートを再構築して表示を確認する。
  11. 問題が無ければ全て再構築して終了します。

以前に失敗した時、コメントやトラックバック関連の復元でエラーが出ていたようだったのでまずは怪しい記述が無いかをチェックしました。中にはこれかな?と思う記述がちらほら。怪しい記述を修正しました。スパムトラックバックも全て削除しました。

そして既存のブログのバックアップです。MT4には標準でブログデータを完全バックアップする事が出来ます。

システムメニュー→ツール→バックアップと辿り、圧縮しないを選びバックアップボタンをクリックするとバックアップが始まります。

ここで気をつけるのがファイルのバックアップ先です(以前の記事「Movable Type 4でブログのバックアップ」でも書きましたが再度書いておきます)。デフォルトのままでバックアップするとサーバーによってはアクセス出来ない場所にバックアップをとってしまいます。これを回避するにはバックアップする場所をmt-config.cgiに次のような記述をして指定します。記述箇所は一番下で構わないと思います。

#== Backup Directory =======================
TempDir /home/user/www/MTをインストールしたディレクトリ/temp
参考URL
Q. バックアップの保存先を変更したい

サーバー側のMovableTypeをインストールしたディレクトリをリネームします。例えばmt42と言う名前だったら_mt42にします。先ほど保存したバックアップファイル(tempディレクトリ)をローカルにダウンロードします(ローカルに_mt42/tempが作成される)。

ローカルには同じバージョンのMTに必要なプラグインを入れてmt42の名前で用意しておきます。僕の場合は真新しいMTを用意しました(mt-config.cgiが無く、mt-config.cgi-originalがある)。そしてこの真新しいMTをサーバーにアップロードしてcgiファイルのパーミッションを755に変更します。

mt.cgiにアクセスしてウィザードを進めて行きます。これでMySQLを利用した新しいmt-config.cgiが作成されます。

ローカルに保存してある_mt42/tempディレクトリを_mt42/importの名前でリネームします。importディレクトリをmt42にカットペーストします。これで_mt42/tempがmt42/importに変わりました。そしてこのimportディレクトリをサーバーにアップロードします。

いよいよブログを復元します。システムメニューからツール→復元と辿ります。バックアップファイルは既にimportディレクトリに保存してあるのでファイルを選択する必要はありません。そのまま復元ボタンを押します。

参考URL
Q. 圧縮なしでバックアップしたブログの復元

特にエラーなど出なかったので一度ウェブページテンプレートを再構築してみます。エラーが出なくて問題ないようなら全て再構築して完了です。

以前に失敗した時は復元する時、ローカルからアップロードしながら復元してました。サーバー側にバックアップファイルがある状態で復元出来ないのかと思いググって見るとちゃんと公式サイトのよくある質問に書いてありました。

ここ1週間ばかりローカル環境のMAMPでMySQLを使う為に入れなければいけないDBD::MySQLがどうしても上手く行かずに落ち込んでいましたが、とりあえず現ブログのDBがMySQLに移行成功してほっとしました。