デジタリストBlog

« 前の記事 | トップ | 次の記事 »

2005年12月03日

MovableTypeデータベースでMySQLからSQLiteへの変更

これまでこのブログはMovableType+MySQLで動作させていましたが、このブログのデータベースをMySQLからSQLiteへと変更しました。なんだか世間一般のMySQLをもてはやす流れに逆行しているが…

どうも2chレンタル鯖板などを見ていると、MovableTypeのエントリーの投稿や再構築の律速段階となっているものの一つはデータベースの処理速度であるというような感じがしてきた(根拠はない。たださくらサーバーのDB鯖速度問題などのこともある)。それと偶然に、MovableType3.2への移行を済ませた頃から僕のブログでも投稿時にエラーを吐くことが非常に多い。理由はわからない。

とりあえずエラーの元凶が判らないけれど、MySQL(とMovableTypeの連携の遅さ)が悪さをしているのであれば、MySQL以外のDBで試してみればよいんじゃないかということで色々試行錯誤してみる。その一つがこのSQLite化なのだけど…

移行のメリット

やってみると案外簡単。しかも、MySQLより若干ではあるけれどエントリーの再構築などが早くなったように感じる。それに、投稿時のエラーが格段に少ない(今のところまだ一度も出ていない)。

二つめのメリットはバックアップやサーバ移動の簡単さ。SQLiteの大きな特徴の一つは1データベース1ファイルで、FTPツールでデータベースファイル(たとえばmt_log.sqlite)をローカルに落としておくだけでバックアップになる。サーバの引越をする場合でもMySQLでは旧サーバからデータのエクスポート、そして新サーバへのデータのインポートに意外と手間が掛かるのに対して、SQLiteならファイルをコピーペーストで移動させるだけでよい。

三つ目は、MySQLだと一つのデータベースしか作れないようなサーバでもSQLiteならいくつものデータベースを利用できるということ。たとえば共有サーバスペースで二人がそれぞれMovableTypeをインストールしたいときに、データベースをわけておくことができる。

MySQLからSQLiteへの移行の方法

これは意外に簡単。作業に入る前に、データのバックアップを必ず取っておこう。

まずはデータベースの変換を行う。http://as-is.net/blog/archives/001023.htmlでMovableTypeのデータベース相互変換CGIスクリプトが公開されている。これはMovableTypeで使用可能なBerkeleyDB、MySQL、PostgreSQL、SQLiteの間で自由に変換できるもの。作者のogawa氏に感謝しつつ、これを使ってMovableTypeの既存のデータベースをSQLiteに変換する。

次にmt-config.cgiの書き換えで、40行目あたりのMySQLに関する情報の部分をコメントアウトしてしまう。各行の頭にシャープ記号を付けるだけでOK。これでMySQLを使用しないようにできる。

# ObjectDriver DBI::mysql
# Database ****//データベース名
# DBUser ****//ユーザー名
# DBPassword ********//パスワード
# DBHost localhost

そして、その20行ほど下にあるSQLiteに関する情報の部分を正しく記入して、行頭のシャープ記号も外しておく。

ObjectDriver DBI::sqlite
Database /virtual/****/public_html/****/mt_log.sqlite

これでMySQLの代わりにSQLiteを読むようになるはずだ。ここで指定したパスに先ほどのデータベース変換スクリプトで生成したSQLiteファイルをおいておけばよい。

Posted at 2005/12/03(土曜日) 0:10

この記事を読んだ人はこんな記事も読んでいます

« 前の記事 | トップ | 次の記事 »

« 前の記事 | トップ | 次の記事 »