東京・埼玉で商店・事業所様のIT化の支援をさせていただいている「IT屋もりた」店長によるサポート日記です。消えたコメント-レビュー(1)いつまでも同じ話題を引っ張るようで恐縮ですが、昨日ご報告させて頂いた“消えたコメント”問題を再検討してみたいと思います。Typeをご使用の方の参考になれば幸いです。Type、サーバー、障害解決のためのツール等の主な仕様は次の通りです。4.56障害発生から解決に至るまでの“あらすじ”を、過去のエントリー順に簡単におさらいしたいと思います。状況の確認]先ず、I.で障害発生を認知した段階で、次の3点の不具合を認識しました。データベースアクセスエラー。データベースアクセスエラー。下記のエラーメッセージがログに残されている((注1)と同じエラーメッセージ)。過去ログを見ると、障害発生の初期の段階では上記とは異なるエラーメッセージが残されている。状況の分析]不具合を認識した段階で、ログの分析といくつかの実験をしました。その結果判った不具合の状況を、もう少し詳しくご説明します。ログに残されているエラーメッセージ(上記(注1))は、コメントテーブルへのアクセスエラーでした。実際に個別エントリーそのものは作成・公開されており、パーマネントリンクのURLを直接指定すれば表示できました。ブログのメインページからリンクされていない状態でした。Typeのテンプレート(メインページ)のソース(下図-1)を見ると、エントリーの本文および拡張部分(“続きを読む”以降)の次に、そのエントリーにリンク(投稿)されているコメントの件数を表示します。この部分でコメントテーブルにアクセスを試みてエラーとなったものと思われます。このブログのメインページのテンプレート・ソース。赤の下線部分を見るとわかるように、コメント(の投稿)を許可(allow)している場合のみ、この部分(コメント)が処理される。このブログのメインページ。(0)”の部分が、図-1に示した処理に該当する個所である。ii.(コメントの投稿が出来ない)につきましては、ログに残されたエラーメッセージ(上記(注2))の通りで、これ以上でも以下でもありません。コメントテーブル(mt_comment)へのアクセスに失敗してコメントが保存できなかった、その通りの結果です。(2)”等のリンクをクリックして)コメントを読むことが出来ました。その後、調査の過程でサイトの再構築(すべて)を実施してしまったことが、最後の一押しだったようです。(0)”になってしまいました。原因調査(推論含む)、および解決の方向性の模索]次のステップでは、ステップ1で収集した情報と、ステップ2の思考をさらに推し進め、原因の特定(情報収集に限界があるため、推論も必要)と解決策の方針を決めました。不具合事象毎に説明いたします。i.(新規エントリーの投稿が出来ない)につきましては、とりあえずの解決策として、「コメントの投稿受付を一時禁止にする」こととしました(もちろんii.と同様に、原因はコメントテーブルにアクセス出来ないことにありますので、最終的にはこの問題を解決しなければなりません)。上記図-1のリストをご覧いただくと判りますように、エントリーの投稿時にコメントテーブルにアクセスするのは、“MTEntryIfAllowComments”(赤い下線部分)の時、つまり“コメントの投稿受付を許可している時”のみです。したがって、コメントの投稿受付を不可にすればよいのではないかと考えて実験したところ、エントリーの投稿が正常に完了しました(メインページからリンクされました)。コメント/トラックバックの順に進み、“投稿を受け付ける条件”を「すべて」から「なし」に変更しました。データベースアクセスエラーの解決策が判るまでの暫定的な対策です。ii.(コメントの投稿が出来ない)につきましては、これが今回の問題の本命と思います。この件の原因と解決策を見出すためには、サーバー会社とシックス・アパートさんの力を借りることを当初から考えていました。結果的にはサーバー会社への質問、問合せは行なわず、シックス・アパートさんのサポートを受けました。障害状況を報告後、シックス・アパートさんからすぐ(5時間後。早い!)に回答が来ました。Type側の設定をどうにかするというよりも、サーバー側の対処が必要な問題と思われるということでした。具体的には、“データベースの修復か、または、該当のデータベースの障害発生前の状態へのリストア”をサーバー会社に相談するようにというアドバイスでした。コメントテーブルを再作成すればよいのではないかという直感はありましたが、シックスアパートさんのアドバイスが後押しをしてくれました。原因は、データベースのコメントテーブル(mt_comment)が壊れたことである、ということにしました(事実としての確認方法が判らないため、推論を採用しました)。解決策は、コメントテーブル(のみ)を再作成することとしました。TABLE)します(カッコ内はSQL文)。実験したところ、コメントの投稿が正常に行なえました。実は、障害を認識した翌日(2007年12月12日)には確認出来ていました。下記の問題iii.(過去の全コメントデータが消えた)の解決方法が見えて来なかったため、コメント投稿の受付再開を延期しておりましたが、いつまでも延ばすわけには行かないと考え12月23日に再開したという次第です(見切り発車)。iii.(過去の全コメントデータが消えた)この件に関しましては原因の特定は省略しました(コメントテーブルが壊れたため、中味のデータが全部消えたという程度の解釈としました)。バックアップファイル(最終取得日:2007年10月30日)の中からコメントデータのみを取り出します。取り出したコメントデータを、上記ii.で再作成したコメントテーブル(mt_comment)の中に入れる。具体的な方法としては、直接データベースを操作できるmysqlコマンドや、phpMyAdmin(ブラウザ上で動くGUIベースのデータベース操作ツール)を使って、上記(1)と(2)の操作をするだけです。解決の方針としてはこれでよく、それほど難しくは無いと考えておりました。やってみましたが、上手くいかずしばらく放り投げておくことになってしまいました。最終的に年を越してしまいました(消えたコメント-復活しました)。対策の実施]につきましては、後日ご報告いたします。