MovabletypeのデータベースをMySQLからSQLiteに移行する

Movabletypeのデータはデータベース(※以下「DB」形式で保管されるわけですが、これをMySQLからSQLiteに変更してみます。 MySQLの場合との相違点は下記。
  • バックアップは、FTPでDBファイルをローカルに保存すれば良い
  • 移行の際は、そのファイルをアップするだけ
  • サーバーのDBファイル設置数制限に左右されない(例:XREAは5つまで)
つまり、MySQLはphpmyadminや、サーバーのコントロールパネル上でその管理を行う必要がありますが(私はその方法しか知りません)、SQLiteの場合は、普段のファイルを取り扱うようにお手軽です。

こうしてみるとまるで良いことばっかりみたいですが、SQLiteのファイル取扱いについては全く判らないので、もし中身が壊れた場合は?とか、中身を修正したい時とか、そういったアクシデントへの対処が不安です。
その辺りはおいおい学習しつつ、って感じで、ともあれやってみようと思います。
いつものように、試験環境はXSASを用いたローカルサーバー上にて。MT3.3にて確認。

バックアップ

ローカルサーバーなので、移行するサイトのファイル全部と、データベースを丸々別のところに保存します。失敗した時は、これらを以前と同様に戻せば済みますね。

データベース変換ファイルを用いて変換する

DBファイルを置くためのディレクトリを作成します。例:MTルート/db (ディレクトリ)

mt-db-convert.cgi: MTデータベースの相互変換CGIスクリプト - Ogawa::Memoranda [Ogawa::Memoranda]
上記にて、データベースを相互変換してくれるCGIスクリプトを配布なさってますので、DLさせて貰います。

解凍した中身の mt-db-convert33.cgi を mt.cgi などが置かれているMTルートと同じ階層に設置します。
そして、ブラウザで先程設置したmt-db-convert33.cgiにアクセスします。

変換コンフィグレーション

アクセスして変換用の画面が表示されたら設定です。左側が現在。右側が変換後の指定になります。今回はMySQL→SQLiteなので、左側(Source DB Configuration)にDB用パスを入力。 右側(Destination DB Configuration)で
  1. SQLite を選択
  2. 3行目(Database:)に”フルパス”で保存場所とDBファイル名を指定
  3. 「Convert」ボタンを押す

変換結果画面

私の場合、変換後の結果表示で、モジュールとして作成していた「テンプレート名」のリネームが行われました。こんな事もあるので、必ず一通り眺めて確認を。 「出力ファイル名 が変更されたわけではない」ので、支障はありません。 最下部には、変換後に mt-config.cgi に記載する設定が出力されます。なので、これに沿って mt-config.cgi の内容を変更。
  • MySQLで設定していた部分をコメントアウト(先頭に”#”を付加)
  • SQLite設定部分を出力内容に沿って書く

終了後

mt-db-convert33.cgi を削除します。 DBファイルを保存したディレクトリに、以下の内容のhtaccessファイルを作成して置きます。

失敗談

ここまで全て行って、mt.cgi にアクセスするとDB接続エラーが出ました。
mt-config.cgi の設定では、パスの記述に
http://localhost/サイト名ディレクトリ/MTディレクトリ
を用いているので、これと同様のパス指定を行ったためです。
なので、変換結果画面と同様のディレクトリ指定記述を行ったら、無事接続出来ました。

ついでに、この段階でのファイル容量をメモしておきます。変換後すぐの状態なので、内容は同等です。
  • MySQL形式・・・1.12MB
  • SQLite形式・・・440KB

全て再構築してみて、以上なく終了。サイト確認→OK

実働サーバーへ導入

ローカル実験で留めておこうと思ってましたが、せっかくなのでデータベース変換を実サーバーでも行ってみました。 上記手順で問題なく終了。


MySQLの時より、再構築等の時間が短縮されたように感じます。
ローカルサーバー上でも動作が早くなってます。
あくまで私の体感的な感想なので、状況により色々変るとは思います。


以上。

[参考記事]
mt-db-convert.cgi: MTデータベースの相互変換CGIスクリプト - Ogawa::Memoranda [Ogawa::Memoranda]
DBコンバート後に受信済みのトラックバックを参照できない問題への対処 - Ogawa::Memoranda [Ogawa::Memoranda]
MovableType備忘録: MovableTypeでBerkeleyDB、SQLiteからMySQLに移行する [MovableType備忘録]
小粋空間: Movable Type + SQLite [小粋空間]


[参考記事:SQLite]
SQLiteをMovable Typeで使ってみる - Ogawa::Memoranda [Ogawa::Memoranda]

▲ to Top

トラックバック(0)

▲ to Top