子宝どっとこむ

 

 MySQLからSQLiteへのDB移行

ロリポップでのMovableTypeの利用に限界を感じはじめています。表示が重くなってきたことと再構築の時間がやたらに掛かるようになってきたことが理由です。

前者は、同居するユーザーによるWebサーバー上でのcgiの利用が膨大となったためで、後者は、やはり同居するユーザーによるDBサーバーへのトラフィックが膨大となったためで、サーバーが違いますが、結局のところユーザー数が増えすぎていることが原因でしょう。

表示が重いのを解決しなければ、訪問者も我慢の限界を超えて閲覧しに来てくれないので大きな問題ですが、この問題はロリポップを使用している限りどうしようもない問題なので、とりあえず脇に置いておいて、再構築時間の増大の問題を解決しようと思いました。

再構築時間が増大となると、500エラーが頻発します。バージョンが上がってからは、500エラーが出てからも『戻る』ボタンを押せば再度再構築に取り掛かりますので、何度か繰り返すことで、投稿データを水泡に帰することを回避できるようになりましたが、『戻る』ボタンを2回クリックしてしまうと投稿データが消えてしまい、被害は甚大です。

ということで、このままでは時間も無駄に消費されてしまいますし、投稿データが消えてしまうリスクもあるので、MySQLよりも調子が良いとうわさのSQLiteに移行を決断した次第です。

移行には、『Ogawa::Memoranda』さんの『Movable TypeのデータベースをDB間で相互にコンバートするCGIスクリプト』を活用させていただきました。

基本的に何も考えないで移行できますが、移行手順に関する私なりの留意点を述べておきます。

  • ゲットした『mt-db-convert.cgi』をアップロードし、これをブラウザで実行すると移行前のパラメータが既に読み込まれています。但し、MySQLのパスワードが未入力になっていますので、『mt-config.cgi』からパスワードをコピペします。
  • 移行後のパラメータはファイルのパスだけです。私が勘違いしていたのはディレクトリのパスを指定するのかと思っていたことで、最後に『/』を入れていたのですが、これが間違いでした。
  • 例えば『./db』というように指定すると、mt-db-convert.cgiのあるディレクトリ上にdbというファイルが出来上がります。拡張子はありません(指定していないので)。これがデータベースになるわけです。
  • 多少の警告メッセージのようなものが出ますが、気にしないでよさそうです。間もなく移行が完了します。
  • 完了時に、『mt-config.cgi』のデータベース指定を書き換えるための代替案が提示されますのでそれを『mt-config.cgi』にコピペします。
  • 『mt.cgi』を実行していつもどおりにエントリー等の編集が可能で移行に問題が無かったことを確認し、これまでのMySQLのデータベースを削除します(ちょっと勇気がいります)。やり方は、ロリポップであれば、『Webツール』の『データベース作成』を表示させ、『削除』ボタンを押すだけです。

【追記】

移行後の使用感ですが、再構築はかなり速くなった感じです。ページの移動もデータベースへのアクセスが短くなった分だけ多少きびきびした動きに感じられます。

なお、ディスク使用量が、51Mから54Mに3Mほどアップしました。つまり、MySQLでのデータベース使用分はカウントされていなかったことが確認できたわけですが、僅か3MをケチるためにMySQLを使い続けるのが馬鹿らしいと思うほどの快適さはSQLiteは提供してくれているようです。但し、自宅サーバーの方であれば、ユーザー数の増大によるトラフィックの増大がないと思いますので、MySQLの方が良いと思います。

【2006/10/19追記】

再構築時間を比較してみたところ、MySQLよりもSQLiteに軍配が上がりました。

なお、『mt-db-convert.cgi』で「MySQL→SQLite」の変換は一発でできましたが、「SQLite→MySQL」の変換は、何度もこけました。MySQLの方が重いことが分かりましたので、逆の変換をしようとする人は少ないと思われ、実害はあまりないかもしれませんが、ご報告しておきます。

 Trackback Pings(0)

No trackbacks found.

 Comments(0)

No comments found.

 Post a Comment

コメント用フィード