MySQL データベースの不具合 テーブルを復旧 REPAIR TABLE 構文

トップページに最新記事が表示されない!

9月29日にMovable Typeで作っているブログ「Audio-Visual Trivia」でトラブルが発生しましたが、xreaサーバーのコントロールセンターには入れました。データはあるようです。
ブログの編集画面にログインできないから新しく記事をアップすることは出来ません。

※今回のトラブルに関する当初の記事はHTTP 500 - 内部サーバー エラー

このXREA.COMのレンタルサーバーを私にプレゼントしてくれた息子は「有料なんだからサポートにメール!」と言うので、今回初めてValue Domainのサポートにメールを送信してみました。

お問い合わせメールを送信した結果
500 Internal Server Error」はCGIスクリプトなどに誤りがあるときに発生するエラーとなります。
また、一定時間内のスクリプト起動数に制限があり、制限以上の起動数がございます場合、同じくエラーとなります。
上記点に関して思い当たる点がある場合には、起動するプロセス数を減らすよう対応していただければと存じます。


結局は、「サーバー側の問題ではないのでユーザー掲示板や利用しているスクリプト提供元などで解決策を探すように」とのことです。ユーザー利用のスクリプトの動作保証及びスクリプトに起因するモジュールやデータベース関連の問題でも、実際に自分で試用せよとのことでした。

うむ、サーバー側のせいではなく、私がサーバーに負荷がかけすぎたようですが「起動数に制限がある」なんてことはチェックしてなかった。
レンタルサーバーは一つのサーバースペースを分割して、複数のユーザーが使用しているのでレンタル料金が安いのだそうです。だからサービスもそれなりに。
そう、安かったのね。プレゼント。

※サーバー上で利用するMySQLというデータベースはMovable Typeを動作させるにもっとも普及しているオープンソースデータベースなんだそうです。
ユーザとその権限に関するデータはデータベース”mysql”内のテーブルに格納されています。
しばらく放って置いて直るのはサーバーの問題の時だけだから、何とかせねば!

「HTTP 500 - 内部サーバー エラー」が表示されて編集画面に入れなくなってから5日経過した2008年10月3日のこと、暫く放って置いたからか、500エラーのお怒りも解けたのか、Movable Typeにログインできたのか、突然管理画面に入れました。 嬉や♪と思ってみると、罰としてエントリーがゼロ!
エントリーの項目は「エントリーは見つかりません」と表示されています。
ブログ内検索をしてみたら、エントリーが無いから、「含んだページは見つかりません。 "○○○"」と表示されます。コメントも同様です。
いずれも「HTTP 500 - 内部サーバー エラー」はもう表示されません。が、今度はトップページにあったサイドバーの最近のエントリーとカテゴリの項目も表示されてません。
トップページをなんとかせねば! 気はあせれども脳みそフリーズ状態。

ここからは今回の私のブログの修復には関係ない作業でした。
今頃になって、ブログの復元用に編集するごとに保存しておいたエントリーのバックアップファイルをチェックしてみると、26日以降の分はなぜか文字化けと空っぽのファイルなのでまるで役に立ちません。やはり26日以降はデータベースでもおかしかったのでしょう。気が付きませんでした。
それで26日分のバックアップファイルを使用して「読み込み/書き出し」で復元することにします。
ここで問題が、「読み込むファイルを、環境設定ファイル (mt-config.cgi) で指定した場所に保存してください」とあるのですが、”mt-config.cgi”はどこ?

まず、私の場合はバックアップファイルを書き出した日付でデスクトップに数ファイルを予備としえ保存してあるので、例として”081005.txt”となっているのを”audiovisual_trivia.txt”と本来のファイル名に戻します。

サーバーのコントロール・パネルからファイルマネージャにログインし、ftpでパブリックhiml内のmtフォルダでmt-config.cgiを開きます。config.cgi内で”import”を探すとパスが表示されているので、今度はimportのフォルダを開きローカルホストでこれから読み込むファイルをアップロードしたらサブミットします。

のんびりし過ぎた感がありますが、トラブルがあってから6日目にして、やっと「読み込み/書き出し」にたどり着きました。「エントリーの投稿者を自分にする」にチェクをして下にある「読み込み/書き出し」ボタンをクリックします。しかし、サーバーでの制限は50Mだそうですが私のファイルは60M以上あるのでどうでしょうか。
やはり、「ページを表示できません。 サーバーが見つからないか、DNS エラーです」になってしまいます。ファイルはftpにアップしてあるから問題ないはずですが。
最悪は記事を1件づつ作り直すしかないか。

ここまでは今回の私のブログの修復には関係ない作業でした。

ブログ「Audio-Visual Trivia」のトップページが正常に表示されるようになりました!

今日は10月7日、トップページが不具合になってからはや8日が経過しました。
もう仕方がありません。罵倒されるのを覚悟で、「ブログをやるからには自分で修復できるように!」という息子に鼻薬を嗅がせてチェックして貰いました。以外にすんなりと取り掛かってくれました。 「まだ出来なかったの? あっそ、困っちゃったのね。」と言って、4.5.5. REPAIR TABLE 構文なるものをチェックしてくれてデータベースの不具合が解消されました。

障害が発生した時、REPAIR TABLE を使用するとMyISAM テーブルのすべてのデータを取り戻せるそうです。
4.5.5. REPAIR TABLE 構文

↑全く分りません。

結局は29日ごろに私が記事を更新した時、サーバーが落ちたらしい。29日は普段の2倍もアクセスがあったせいでしょうか。

おかしいと思ったらすぐサーバーの管理画面でデータベースをチェックしなくてはいけなかったのです。私のDB(データベース)はMySQLなのでそこにログインしてテーブルをチェックするのだそうです。今までやったこともなかった!ひどいMTユーザーです。

☆今後は心してMySQL adominnで入ってテーブルの一覧をチェックすることと、バックアップも取るようにします。

後で間違いを犯さないように先ほどアップしたバックアップファイルをインポートから削除しておきましょう。
これもアップする時と同じに、ftpでパブリックhiml内のmtフォルダ内のimportのフォルダを開き”audiovisual_trivia.txt”にチェックを入れたら削除ボタンをクリックしてサブミットします。

いくらGoogleで検索しても私の今回のような事例は見つかりませんでした。ブログの調子が悪いのにデータベースをチェックしないようなあほなMovable Typeユーザーはいないのでしょう。

※参考
「テーブルを噛む」とは?
MySQL テーブルの最適化
MySQLのMyISAM 型テーブルは、レコードの追加や削除を繰り返しているとどんどん効率が悪くなっていくので、定期的に最適化を行った方がよい。最適化は optimize table という SQL で実行する
という記事をみましたが、なんだかわけが分らずこんな難しいことは私にはできそうもない。単に「最適化」ボタンをクリックすれば良いのか。PCのスキャンデスクみたいに整頓できて動きが軽くなるらしいが行う前にデータベースのバックアップを取る必要があるとか。だが、Movable Typeではあまりやる必要がないとも聞いたが、私はこれまでただの一度もやったことがない。
※その後分ったことはオーバーヘッドのテーブルをチェックして最適化すれば良いだけのことでした。

サーバーのサポートにメールしたり、FAQやトピックを参照したりと今まであまりやっていないことに挑戦して良い勉強になったようです。で、忘れないように記事にしているのです。
つくづく、「Hot'n Cool」が利用しているエキサイトブログの有難みが分ります。

追記:
2008年10月14日、ブログが復旧して1週間した経っていないというのに、再び同じ状態になりました。記事を更新していると、今回は突然、管理画面が英語表示になりました。次にトップページに新着記事が表示されなくなり、ブログ内検索も無効。
管理画面に戻ってみると、エントリーがなくなっていました。

さて、ここで前述の復旧作業の実習です。
xreaサーバーのコントロールセンターにログインし、左の管理メニューのデータベースをクリック、”PhpMyAdmin自動インストール(MySQL管理) ”にログイン、MySQのテーブル一覧で領域が発生しているテーブル、つまりオーバーヘッドを見つけたらチェックして、下のプルダウンメニューから「テーブルを復旧する(repair table )」にします。←最適化だったか。。。な。
※上記にあるように、オーバーヘッドは不具合が発生している領域かと思ったらブログの削除や更新を行っているうちにできる未使用領域のようなものらしいです。PCでディスクのスキャンをする時などのように最適化すればOKらしいです。
今回は4テーブルがオーバーヘッドでした。
この後、ブログの管理画面でサイトの再構築をして万事OK! たぶん。。。

管理画面の使用言語が英語になってしまった顛末記は管理画面の使用言語が突然英語に!

オーバーヘッドを一応日々チェックしてみるとエントリーは自分でいじっているのですが、トラックバックのテーブルが1000単位で壊れます。そうとうスパム攻撃されているのでしょうかね。(コメントのテーブルは少々)
以上のころから、今後はエントリーのテーブルがオーバーヘッドの時は更新しないようにしています。値は変化するのでオーバーヘッドと表示されていない時を見計らっています。

※「テーブルがクラッシュ!」の参考を後で読んでみる。たぶん分らない。
http://ss2.xrea.com/www.s192.xrea.com/jp/admin.cgi 
http://dev.mysql.com/doc/refman/4.1/ja/repair-table.html

※「phpMyAdminでMySQLバックアップ」
手動でバックアップする方法について書かれた手順を後で読む。(ただしこの方はロリポだそうです。)
http://blog.open-arms.biz/200503/12111.php
私は分らない。
[PR]
by koukinobaaba | 2008-10-08 09:42 | 面白記事
<< プレシャスバナナやプレミアムバ... ゲーム The Game (1... >>