当ブログに使っているMovableTypeの管理画面にアクセスできない障害が発生した。
障害が問題となるのは、コメント投稿や記事の投稿などに限定されており、第三者の閲覧には全く問題が無かったという理由により、暇な時まで2週間ほど放置。
ユーザー認証画面から遷移できず、「ログインできませんでした。」と表示される。認証系の不具合から、cookieかセッション管理の問題だろうと見当をつけ、データベースの整合性をチェックすると、一部のテーブルが見事に破損していた。
どうやら、データベースのmt_sessionテーブルに不具合が起きると、このエラーが出るらしい。中身のレコードを覗いてみると、自動保存されたエントリーの中身なども保存されており、純粋に認証系のセッションデータだけではなく、雑多な保存先となっている模様。該当するテーブルに対して、SQLのOPTIMIZEコマンドやREPAIRコマンドを使って復旧を試み、成功。
幸い、SQLコマンドやphpMyAdminの様な復旧の手段が用意できたが、MovableTypeやWordpressのみを提供しているホスティングサービスだったら自力ではアウトだった。後になって調べてみると、この手のテーブル破損による障害は結構起きて、昔から被害者が出ているようだ。なお、MovableTypeはアップデートを行うと、データベースを書き換えるので前のバージョンへは戻れないという仕様が存在する。それなら、データベースを制御するコードをアップデートの際に書き換える、といった方策もあると思うのだが…。