ここの日記のデータはMySQLというデータベースに格納している。
非常に高速なことで有名なこのデータベースエンジンだが、うちのサイトが遅いのは自宅サーバが遅すぎるからであり、MySQLのせいではない(^^;;;
ところで、このデータを毎朝自動バックアップしているのだが、それが昨日からコケていた。
メールで届いたエラーメッセージはこんな感じだ。
mysqldump: Can’t get CREATE TABLE for table ‘mt_template’ (Lost connection to MySQL server during query)
昨日はマラソンの大会があったので、朝からそんなに時間も割けず、今日になってから本格的にトラブルシュートを開始した。
さっそくログファイルである /var/mysql/`hostname`.err を見ると、どうもこのエラーが起きたときにデータベースが停止し、safe_mysqldによって再起動されているようだ。
実際に手でバックアップスクリプトを流してみると、再現する。
同じエラーが起きて、データベースが落ちて、再起動される。
色々いじっているうちに、ある特定のテーブルについて、show create tableを発行するとデータベースが落ちることを確認した。
mt_templateというMovableTypeで使っているテーブル。
このテーブルには苦い思い出があって、以前BerkleyDBで使用していたときに、このファイルがよく壊れたのだ。
今はMySQLを使っているし、関係ないと思いつつも、イヤな気持ちは変わらない。
もしかして、このテーブルだけ再作成したほうがスッキリするかな。
データはselectできるし、おかしいのはshow create tableだけ。
以前のバックアップもあるし、最近少し変更しているけど、差分はトランザクションログを再生してもいいし、やり直してもいいし・・・
とかって考えてたら、突然目の前のsshターミナルの接続が切れた。
???
再接続しようとしても、自宅サーバが応答しない。
sshだけじゃない、WEBサーバも応答しない。
サーバ全体が落ちた??
会社の無線LANが切れているわけじゃない。
妻のメッセンジャーも上がっているから、自宅のネットワークが切れたわけでもない。
妻にメッセンジャーで問いかけてみる。
俺「もしかして、サーバ落ちてない?」
妻「ごめん。あるとがリブートしちゃった><」
・・・苦笑
しかも、リブートしたら現象は再現しなくなっていた。
よくよくログを見てみたら、out of memoryとかも出ていた。
ちょっとメモリの割り当てが足りなかったのかもしれない。
なんせ非力なサーバだから(涙
[MT3.2]BerkleyDB→MySQLに移行
どうやらBerkleyDBが悲鳴を上げはじめたようす。トラックバックを受けると443エラーが出てしまう。仕方がないので、MySQLへの移行作業を行ったのでメモ。