つい先日ルータに使用している Linux とメインマシンの WinXP が相次いで故障したのだが、今度は仕事先のサーバーが故障した。
第一報が飛び込んだのは、昨日の夜7時半ごろ。
夕食を食べようとしていたところだったが、サーバー担当者からの「データベースサーバーのハードディスクが壊れました」という知らせで、食事どころではなくなった。
無停止で運用する必要があったため、最近のバックアップは取っていない。
(サーバーを停止しないとデータベースのバックアップは取れない)
そういうクリティカルな部分なので RAID を組んであったのだが、その RAID 装置自体が壊れたらしい。
普通なら fsck する部分でディスクエラーとなり起動できない…と言われたので、「先日のルータ故障と同じだ」と直感。
「別のマシンに接続して、ext2 として mount してみてください」と指示。
最悪の状況を考え、データがすべて壊れた場合に最善の復旧方法を用意する。
からっぽのデータベースを作って再スタート、ということだが、データベースはその構造も含めて長期にわたっていじり続けているので、一発で同じ構造が作れるかどうか確認。
案の定、細かな問題がある (^^;;
構造作成のスクリプトをいろいろ手直し…
10分ほどたって再び電話。
「mount しようとしても壊れてるといわれます〜」
「fsck.ext2 しました?」と聞くと、「あぁ、そういえばしてない」とのこと。
サーバ担当者も気が動転している。「もうすこしやってみます」といって電話は切れた。
呼び出されるかもしれないので、夕食をかき込んでおく。
3度目の電話は8時ごろ。
「mount はできましたが、やはりデータが壊れているようです」
うぅむ…仕方ない。「今すぐいきます」ということで電話を切った。
うちからその仕事場までおよそ2時間。
この間に進展があった場合、僕がすぐプログラムを出来る環境にいないと時間のロスだ。
しかし、どうやら問題は深刻で、2時間では解決できないだろう。
10時ごろに到着したが、状況は芳しくないようだった。
HDD 1台からはデータを吸い上げているが、いくつかのデータは壊れている。
特に、ユーザー管理データなど、クリティカルなものが壊れているのが痛かった。
壊れたデータはなにで、壊れていないデータはなにで、必要なデータはなにか…という洗い出し作業を始める。
ユーザー管理データが壊れているのなら、それに関係したデータはすべて意味を失う。
しかし、コンテンツ運用に必要なデータは、ユーザーとは関係がない。これらはすべて残っているようだ。
これはありがたい。少なくとも、コンテンツの運用は復旧できる。
データを吸い上げ終わり、もう一台の HDD を mount する。
壊れている箇所が別で、合わせて復旧できれば…と望みを託すも、こちらは完全に壊れていて、mount すらできない。
決断の時…完全復旧はあきらめ、データは破損したがコンテンツの復旧を急ごう。
この時点で、深夜12時近かった。
方針が定まれば後は早い。
ユーザーへのお詫び文章を用意し、表示できるようにプログラムする。
既存のユーザーの一部で、ユーザー側がデータを持っている場合がある。
これらの場合、こちらのユーザー管理データと不整合が生じて問題が起こることがわかったので、これの対処プログラムも作り上げる。
1時過ぎには復旧の準備が整ったが、これで大丈夫なのかがわからない。
現在、ユーザーにはトラブル告知の HTML ページを表示しているが、このままでは自分もコンテンツに入れず、動作確認できないためだ。
ここに条件的に穴を開けるプログラムを作り、ひととおりの動作確認。
復旧の準備が出来、ユーザーに公開したのは1時45分だった。
話はこれで終わりじゃない。
突貫作業で、案の定問題点が出る。
これを細かく修正する。全部終わったのは3時ごろだった。
サーバー担当者と、今後の方針について対策する。
現在の方法ではサーバーは停止できず、データベースのバックアップも取れないのだが、ディスクを二重化するRAIDではなく、サーバーの二重化をうまく行えば、片方を停止しても問題は出ない。
データベースなので停止している間に不整合が起こっては困るのだが、これについてはうまい方法もある。
また、同じものが2台あることになるので、トラブルの際にはすぐ切り替えることも出来る。
バックアップを取るためだけにサーバーを1台用意することになるのだが、今後はこの方針で行ったほうがいいだろう。
空が明るくなり、電車が動き始めたので帰宅。
すこし仮眠を取ったが、目が覚めたのでこの日記を書いてみた。
同じテーマの日記(最近の一覧)
関連ページ
しばらく日記を書いていませんでした【日記 04/05/03】
別年同日の日記
申し訳ありませんが、現在意見投稿をできない状態にしています。 |