月曜の昼くらいから突然ブログがアクセス不能になった。
前のようにアップデートしたからとかそういうのでは無く、なんの脈絡もなく突然アクセスが不能に。
アクセス不能になった時間はログを見ると6/3 14:06。
復旧は23:22だから、10時間近く落ちてた。
始めは楽観視
突然使えなくなったから、まぁほっとけば直るだろと思ってたけど、待てど暮らせど直らない。
データベース接続エラーがただ出続ける。
とりあえずサーバーを再起動させてみるも直らない。
うーん。これはヤバイ。
勝手に復旧する見込みもなさそう。
だけど時間が時間だけに復旧対応もなかなか出来ず。
仕事から帰ってきて子供にご飯を食べさせて風呂に入れて寝かしつけて・・・と、本格的に障害対応しだしたのは21時くらいから。
原因がまるでわからない
何かインストールをしてしまっておかしくなったというわけではないので、かなり悩む。
WordPressがはき出すエラーは表示されるのでPHPは問題ない。
データベース接続エラーだからMySQLの問題かなと思い、MySQLにrootでログインを試みるが出来ない。
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)
というエラーをはき出してログインできず。
MySQLを再インストールしてみるが・・・
このエラーメッセージでググると、ソケットファイルがないためログインできませんとのこと。
findコマンドでmysql.sockを検索しても確かに存在しない。
mysql.sockの事を調べてみると、MySQLを起動したときに自動で作られるファイルらしい。
でも、mysqldを起動しても作られてない。
そういう時はMySQLを再インストールしたら直るよ!って書いてあるサイトを発見。
そうなのかと思い、MySQLを再インストールしてみても、直らない。
直らないどころかPHPまで動かなくなった(;´Д`)
PHPも再インストールし直すはめに。
で、MySQLの再インストールをして再度ログインをしてみるが、上記と同じエラーをはき出す。
なぜゆえ?思ってMySQLのログをたどってみると、こんな文章が。
This could be because you hit a bug. It is also possible that this binary
or one of the libraries it was linked against is corrupt, improperly built,
or misconfigured. This error can also be caused by malfunctioning hardware.
We will try our best to scrape up some info that will hopefully help
diagnose the problem, but since we have already crashed,
something is definitely wrong and this may fail.
you hit a bug って・・・。
これらはMySQLのバグかハードウェアの誤動作でなることもあります。みたいなことが書いてある。
VPSだからハードウェアエラーは考えられないので、MySQLのバグが原因。
MySQLのバグでWordPressで使っているデータベースを粉砕してしまったため、ブログにアクセスすることが出来なくなった模様。
なんとまぁ・・・。
MySQLが強制終了してた
MySQLがデータベースを粉砕したのは解ったが、なぜMySQLにログインできないのかが解らない。
そこで、mysqldを起動してから起動プロセスを確認してみると、mysqldが無い。
あれ?起動コマンドを流したとき、確かに[ok]って出てきたから起動してるはずなのに・・・。
MySQLについてさらに調べてみると、クラッシュしたデータベースをMySQLが参照しようとすると、MySQLが強制終了してしまうみたい。
ということは、mysql.sockは作られていないのではなく、作られたけどすぐMySQLが強制終了するので即削除されていた、ということになる。
MySQLにログインを試みたとき、mysql.sockが無いからログインできないというエラーメッセージが出てログインできなかった理由は、
MySQLを起動→mysql.sockが生成される→MySQLが壊れたデータベースにアクセス→MySQLが強制終了→mysql.sockが自動で削除される→ブログ主がログインを試みる→sockが無くてログインできないというエラーメッセージが表示
という理由だと気づく。
ここでやっと復旧方法が思い浮かぶ。
この時23時。
httpdの停止と破損データベースの隔離
MySQLが即クラッシュしてしまうのはMySQLが壊れたデータベースにアクセスするためだということが解ったので、まずhttpdを停止。
これはWordPressがMySQLを通してデータベースの参照を試みてまたMySQLが強制終了するのを防ぐため。
さらにクラッシュしたデータベースを隔離。
/var/lib/mysql/に作られたデータベースはすべて削除するかどこかのディレクトリに移動する。
その後、MySQLを起動し、rootでログインを試みると・・・
デキタ━━━━━━(゚∀゚)━━━━━━!!!!!
これでかつる!
httpdを起動しても落ちない。
ふー。これで何とかなりそうだ。
ブログを復元
元のデータベースは壊れてしまったので新規でWordPress用データベースを作成し、WordPressの管理画面にログインする。
データベースはまっさらな物なので、ブログ名やユーザー名、パスワードを最初に決める画面が現れる。
ここは適当に入力し、管理画面にログイン。
WordPress自体を再インストールしたわけではないので、プラグインとかはそのまま残ってる。
その中からWP-DBManagerプラグインを起動し、バックアップデータからデータベースを復元して復旧終了。
原因はMySQLのバグによるデータベースのクラッシュ
原因はMySQLのバグでデータベースが粉砕されるという何とも理不尽な物だった。
防ぐにはMySQLを最新のバージョンにしておく必要がある。
取っててよかったバックアップ
WP-DBManagerで毎日自動でバックアップをしてたため、スムーズに復旧することが出来た。
これをしてなかったら終わってた。
必ずバックアップは取っておいた方がいいよ。
データは金じゃ買えないからね。
ご迷惑をおかけしました
原因に気づくまでどうでもいいことで時間を費やしたのがちょっと情けなかったw
ログをしっかり読めばすぐに解ったのに。
ブログ主の対応方法が残念だったため、10時間くらいブログが閲覧不能状態に陥ってしまいました。
大変ご迷惑をおかけしましたm(_ _)m
おつかれさまです
大変ご迷惑をおかけいたしました(;´Д`)
くずのはさん、こんにちは。
いやー、復旧してよかったです。
心配しましたよ〜。
昨日、ずっとアクセスできなかったので。
サーバークラッシュも記事ネタにしちゃうのもすごい。
とても参考になります。
バックアップを忘れずにするようにします!
大変ご迷惑をおかけしました(;´Д`)
ブログは自分のメモ帳だと思って色々まとめているんですが、
今回自分のブログにアクセス出来なくなって、
WordPressの設定とかどうやったのかわからなくて焦りましたw
今回の件でバックアップの大切さが身に染みましたw
おつかれさまでした。
いろんな角度から見ないとわからないんですねぇ・・・
サーバー管理?って難しいのね・・・
難しいというか、自分の対応が稚拙というかw
後から考えてみればMySQLの不具合だというのはログを見れば一発でわかるのに、
無駄な行動の嵐で時間がかかってしまいました(-_-;)
ご迷惑をおかけしました(;´Д`)
pc上のweddavサーバー、iphoneでのovertheairでのサーバーでの接続、isubでの接続、teratermでの接続、すべてが急に出来なくなったのですが、この記事と何か関係ありますか?
またsakuraのコントロールパネルには入れましたが、再起動などしましたが、何もなりません。
ご教授お願いします。
関係ありません。
さくらのサポートに聞いてみたらどうですか?