Naga Blog

Movable Type

あんまり500エラーが多いので、データベースのシステムを「MySQL」から「SQLite」へ移行しました。

Naga BLOG」はこの度、データベースのシステムを「MySQL」から「SQLite」へ移行しました。本当は、「Movable Type 3.31」(以下MT3.31)へのアップデートの時に移行する予定だったのですが、「SQLite」では、システムの稼働スピードが極端に遅くなるバグの発生で、先延ばしにしていたのが理由です。「MT3.32」で、このバグが解消され、「SQLite」でデータベースを作っている人達からも不満が聞こえてこないので、やっと変更に踏み切った次第です。これで、再構築や、エントリーの投稿時に500エラーの連発と、そこはかとなくシステムの動作が遅い状況から逃れられるのか、楽しみしつつ作業しましたヨ。

本来、「MySQL」っていうデータベースは大量のデータを高速処理できる能力を持っているのですが、LOLLIPOP!では、少ないSQLサーバに大量のユーザーがぶら下がっているらしくて、それが処理に時間がかかる原因となり、動作速度が低下、500エラーとなっていたんですヨ。安い管理料のサーバなんだから仕方がないとは分かってますが、もうちょっとどうにかならんもんかと思いますヨ。LOLLIPOP!さん!!

そこで、「BerkeleyDB」みたいにサーバー上にデータベースファイルを作ってくれる「SQLite」は、データを共同使用のサーバに蓄積しない為、高速に稼働するのが利点です。しかも、システム自体の動作速度も「MySQL」と比べて約2倍速いってんだからイイじゃありませんか。ただし、弱点があり「MySQL」等と比べると、1つのデータに割り当てられるデータ容量が大きくできないんだそうです。まぁ、1つのエントリーで長編小説を書いたり、HTMLタグぶち込んでレイアウトしまくる訳ではないので、自分が書いている分量ぐらいだったら恐らく問題はないでしょう。(無いと思いたい。)

と言うわけで、いつものごとく覚え書きを兼ねて作業手順を書いておきます。

データベースをコンバートしなければいけないので、まずは何かあった時の為にログデータを書き出します。最初に、「MySQL」で運用している状態のログデータを書き出す為に、LOLLIPOP!のユーザーページから、データベース作成へ行き、「phpMyAdmin」のデータベース管理画面に入ります。そこでエクスポートの項目から、ファイルとしてログデータを書き出しました。次に「MT」の管理画面から、読み出し/書き出しの項目から、エントリーの書き出しを選び、ログデータを書き出しました。「MySQL」のログデータは、特殊らしいので、心配だったのもあり、2段構えでいきましたヨ。

次に、データベースのコンバート作業なんですが、「MT」に付いている「mt-sql2db.cgi」というコンバートツールでは、データの「MySQL」から「SQLite」へ移行はできないので、「Ogawa::Memoranda」さんの「mt-db-convert.cgi: MTデータベースの相互変換CGIスクリプト」エントリーで、配布されている「mt-db-convert.cgi」を使うことにしました。

リンクを辿って、「mt-db-convert.cgi」をダウンロードできたら、フォルダの中から、自分が使っている「MT」のバージョンにあう「mt-db-convert.cgi」(自分の場合は「MT3.32」なので「mt-db-convert33.cgi」)を選び、サーバに接続した後、「mt.cgi」などが入っているディレクトリに同階層アップロードします。終了を確認したら、「mt-db-convert.cgi」のパーミッションを755に設定します。

続いて、「mt.cgi」などが入っているディレクトリに同階層に「db」というディレクトリを作成した後、テキストエディターで作った「sqlite.db」という空のファイルをアップロードしておきます。

それから、ブラウザーを起動して「mt-db-convert.cgi」にアクセスし、コンバートを実行するための設定画面を開きます。

まずは、転送元の情報を入力します。といっても既にデフォルトで「mt-config.cgi」または、「mt.cfg」の情報が設定されていますので書くとこは殆ど無いです。ただし、安全の為にDBPasswordは設定されていませんので、ここにパスワードを書き込みます。

次に、転送先の情報を入力します。殆ど書くところが無いのですが、「SQLite」のデータベースを格納するファイルを指定する必要がありますので、そこだけ書き込みます。コレは絶対パスで入力する必要があるので気を受けて下さい。LOLLIPOP!の場合だと下記のようになります。

/home/sites/lolipop.jp/users/ユーザーによって違う/web/システムが入っているディレクトリ/db/sqlite.db

そして、「Convert」ボタンをクリックすると、転送元から転送先にデータベースのコンバートが開始されます。エントリー数にもよりますが、数分で終わります。

コンバートが終わったら、「mt-config.cgi」を開いて「MySQL」の設定をしている箇所の前に「#」を入れてコメントアウトします。次に、「SQLite」の設定の箇所の前についている「#」を外してアクティブにします。ここには2行しか書かれていないのですが、2行目にデータベースの場所を設定します。名称は、コンバート前にサーバに作った「db」というディレクトリと「sqlite.db」というファイルの名を入れます。アカウントやパスワードの記述する事はありません。

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

これで設定は終わりです。「mt-config.cgi」をサーバにアップロードして作業は終了です。

最終的に、「MT」の管理画面から「エントリー」に入り、エントリーリストが表示されていたら成功です。

で、「SQLite」にデータベースを変更後、動かしてみた感想ですが、ページの読み込みや、再構築の時間が大夫短縮されましたね。エントリー・タグも復活させてみたのですが、「MySQL」で設定した時は、10エントリーぐらいにエントリー・タグを入れると遅くなって500エラーを連発していたのですが、それも解消され20エントリーぐらいにエントリー・タグを加えても問題なく動いています。これで、懸案事項も解決されてスッキリしました。

後は、頑張って全てのエントリーに、エントリー・タグを加える作業か…。いっぱいあるなぁ…。

トラックバック [1]

トラックバック

>> ブログリニューアルについて from ON THE SUNNY SIDE OF THE STREET
少々長くなりますが「OLD WORK」や「TATTING PATTERN」は何処...

About this entry

このページは、naganagaが2006年9月 7日 00:38に書いたブログ記事です。

ひとつ前のブログ記事は「親王殿下御生誕おめでとうございます。」です。

次のブログ記事は「「iMac」と「Mac mini」、Intelプロセッサになって初めてのスピードアップをしました。」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。