障害対応とか

今日は会社でハードウェアの障害対応とか、JunkStageでDBの障害とか障害の多い日だった。
会社の障害対応の内容は書けなそうなので、JunkStageの内容をメモ。

JunkStage障害対応

ライターさんのページが見れないと連絡をもらって、とりあえずどんな現象か確認してみる。

現象から予想
  • ブラウザがサーバーにアクセスしに行って、そのまま(コネクションもつながりっぱなし)

下のような予想を立てた。

障害の場所を探す。DBがあやしいんじゃね?

次にWeb Serverに入って、DB Serverに接続できるか確認。

mysql -u username dbname -p

問題なく入れた。

DBじゃなかったのか・・。Webかなぁ。

それじゃ、Webかなぁ・・。
と思っていろいろ調べるけど何も原因が見つからない。

現象を再度確認

もう一度ブラウザでページを表示させながら原因を探していると、ブラウザにこんなメッセージが表示された。

WordPress database error: [MySQL server has gone away]
SELECT option_value FROM xxx_options WHERE option_name = 'siteurl' LIMIT 1

WordPress database error: [MySQL server has gone away]
SELECT option_value FROM xxx_options WHERE option_name = 'home' LIMIT 1
.....

「WebサーバーからDBにデータを取りに行ったけど、DBサーバーがどっかいっちゃったよ」ということらしい。
こんな感じ。

DBのテーブルでエラー?

ついでにひとつのテーブルしかエラーが出ていないので、DB全体ではなくて
テーブルを取得できない、更新できない、とかそんなのかなぁ・・と思ってみる。
そして、もう一度DBサーバーをあたってみる。

google先生は偉大

ついでにこのエラーでぐぐってみると「WordPress database error: [MySQL server has gone away]」いいページを見つけた。
http://neoinspire.net/archives/92*1

DB内のテーブルの修復

ということで、同じような症状の人もいたようだし、テーブルの修復をしてみる。

mysql> check table xxxx_options fast quick;
+--------------------------+-------+----------+-----------------------------+
| Table                    | Op    | Msg_type | Msg_text                    |
+--------------------------+-------+----------+-----------------------------+
| dbname.xxxx_options      | check | status   | Table is already up to date |
+--------------------------+-------+----------+-----------------------------+
1 row in set (0.78 sec)

問題なさそう。
もうちょっと細かいチェックをしてみる。

mysql> check table xxxx_options extended;
+--------------------------+-------+----------+----------+
| Table                    | Op    | Msg_type | Msg_text |
+--------------------------+-------+----------+----------+
| dbname.xxxx_options      | check | status   | OK       |
+--------------------------+-------+----------+----------+
1 row in set (0.00 sec)

表示されないページを確認してみるけど、だめだ・・。
素直にrepair tableをしてみよう。

mysql> repair table xxxx_options ;
+--------------------------+--------+----------+----------+
| Table                    | Op     | Msg_type | Msg_text |
+--------------------------+--------+----------+----------+
| dbname.xxxx_options      | repair | status   | OK       |
+--------------------------+--------+----------+----------+
1 row in set (0.01 sec)

このあとページを見に行ったら問題なく表示されていた。

解決\(^o^)/

今回の障害の原因はこんな感じ。

「復旧したYO!」メールを出して終了。

*1:とてもすばらしい