MySQL から SQLite へ移行

| コメント(3) | トラックバック(0)
SQLite

Movable Typeで使っているDetabaseをMySQLからSQLiteへ変更してみました。

僕はサーバーでロリポップ!を使っているのですが、どうもロリポップはMySQL用のサーバーは5,6台しかないみたいで、夜間になると動作が重くなるときがありました。重くなるのでダイナミックパブリッシングもしてなかったのですが、それでも500エラーが良く出ていたので思い切ってデータベースごと移してみたわけです。

SQLiteの利点ですが、これはBerkeleyDBみたいにサーバー上にデータベースファイルを作ってみれるDBになっています。それなのにMySQLと比べて約二倍早く、高速で処理をしてくれるという優れものです。っが難点もあり、MySQLなどと比べると一個のデータに割り当てられるデータ容量が大きくないという特徴もあります。ですがMTなどのblogではそこまで長文も書くことも無いので変更してみたわけです。

データベース変更手順 (MySQL -> SQLite)

  1. MySQL のバックアップをしておく
  2. mt-db-convert.cgi をダウンロードしてくる
  3. mt-db-convert.cgi をmt-config.cgiの入っているデレクトリに入れる
  4. mt-db-convert.cgi にアクセスしセットアップして実行
  5. mt-db-convert.cgi の最後に変更箇所が現れるのでmt-config.cgiの部分を書き換える

ホントに簡単で、mt-config.cgiのデータベース設定を変えてmt-db-convert.cgiを実行するだけでできます。

mt-config.cgiのMySQLの設定をしている箇所があるのと思うのですがそこをコメントアウトします。そしてSQLiteの設定の欄に下記のようにデータベース名のみ設定します。アカウントやパスワードの記述は不要です。

ObjectDriver DBI::sqlite
Database ./db/sqlite.db

ちなみにこのPATHはmt-config.cgiのあるディレクトリにdbという名のディレクトリを作り、その中にsqlite.dbと言う名前のデータベースを作ることを表しています。

念のため移行の際は今まで使っていたデータベースのバックアップを取っておくことをお勧めします。

移行後の感想&使用感

とにかくrebuild(再構築)が劇的に早くなりました。エントリーの数が50ぐらいしかないので余計にそう感じるのでしょうが、これは移行する価値があるとおもいますよ。っとまぁレンタルサーバーでMT使っている人に限った話ですけどね。

追記:04 06,2006
mt-db2sql.cgiではBerkeleyDBからSQLiteの移行しか出来ずMySQLからの変更には適応していなかったため本文を変更。またおおまかな作業手順も追加