ずいぶん時間がかかってしまいましたが、ようやくブログの復旧が終わりました。毎日の生活もあるので、なかなか作業に費やす時間を確保することが出来ませんでしたが、データも一切失われることなく、基本的な設定も変更せず元通りにすることができました。
それで今後の参考のために、復旧の経過を書いておきたいと思います。
まず壊れた状態ですが、再構築するたびに500 Internal Server Errorが出るようになったことです。これはMovable TypeでデータベースにBerkley DBを使っている場合によくでる現象のようで、データ量が増えたりすると、再構築に時間がかかりすぎ、サーバーがエラーを返すのが原因でした。
再構築するデータの単位を最小限に絞り込みましたが、そもそものデータ量が多いのですから、結局サーバーエラーは解消されず、根本的にブログを作り直すことにしました。
作り直すといっても、基本的にはデータベースをBerkley DBからMySQLに変更するだけでした。現在利用しているさくらインターネットの共用レンタルサーバには、MySQLのデータベースが1個作成できるので、それをつかうことにしました。Movable Typeには、Berkley DBからMySQLに移行するためのCGIも備わっているので、実際そんなに手間がかかることではありません。
しかし、ひとつクリアしたい問題がありました。実は今後、同じサーバーでxoops cubeも導入したいと考えていました。xoopsもデータベースにMySQLを使うので、1個のデータベースでMTとMySQLを共存させられるかどうかが知りたかったのです。
結論から言うと、MySQLデータベース内のテーブル名の接頭語が重複しなければ共存できるそうなので(ただし当然のことながらサポート外)、あえて人柱のつもりでMySQLに移行することにしました。
まあ、MySQLにしなければMTが復旧しないので、いずれにしてもそうせざるを得なかったのではありますが^^;
ということで、以下の手順で復旧をしました。
(1)まずテンプレートファイルをすべて手作業でバックアップ(MTの管理画面の「環境設定」で)
(2)サーバーにtelnetまたはSSHでログインし、万一のためにBerkley DBのファイルをすべてtarボールにしてバックアップ($ tar -zcvf backupdb.tar.gz /(Berkley DBのパス)/*)
(3)MySQLのデータベースを作成し、データベース名とユーザーIDとパスワード、サーバーのURLをメモ
(4)MTの環境設定ファイルmt-config.cgiを、Berkley DBとMySQLの設定を有効にするよう書き換えて、FTPでサーバーにアップロード
(5)ブラウザで、http://(MTをインストールしたフォルダのURL)/mt-db2sql.cgiにアクセスする。これでBerkley DBからMySQLへの移行が自動的に始まり、エラーがなければ「Done copying data from Berkeley DB to SQL database! All went well.」というメッセージを出して終了する。
(6)再度mt-config.cgiを編集し、Berkley DBの設定を無効(削除またはコメントアウト)して、FTPでアップロードする。
(7)MTの管理画面にログインして再構築。エラーが出なければ移行が完了しています。
手順自体はそんなに難しいものではないのですが、私はmt-db2sql.cgiを動作させるところで、Berkley DBからMySQLへデータがまったく移転できないエラーでしばらく躓いていました。結論からいうと、mt-config.cgiでMySQLを有効にしたのに、元のデータが入っているBerkley DBを無効にしていて、データが取り出せなくなっていたのが原因でした。最初はそれがまったく分からず、しかもMT3.33のマニュアルにも書いていなかったので、いろいろ悩んでしまいました。mt-config.cgiを何度も書き直してもエラーが直らないので、もう壊れてもいい覚悟で、Berkley DBとMySQLを同時に有効にしてみたら、あっさり移転が完了。拍子抜けするくらい簡単に終わってしまいました。この点について、記述してある情報が意外に少ないので、この手の作業をする方は留意を。
ということで、元通りになりましたので、またマイペースで更新を続けていこうかと思います。このサイトにもやっと正月が来たような気分です。ということで、改めて今年もどうぞよろしくお願いいたします。
コメントする