ファーストサーバ大規模障害を目の当たりにして自社のバックアップ体制を確認した

※以前別の場所で書いた文章を備忘的に書き記しておきます。

【投稿年月日】2012-06-26 【ジャンル】独り言

 レンタルサーバ会社大手のファーストサーバが大規模障害を起こした。

大規模障害の概要と原因について(中間報告)
support.fsv.jp/info/nw20120...
ファーストサーバ 6月22日に発生した大規模障害に関する「よくあるご質問」
www.faq2.fsv.jp/faq/questio...

 幸いなことに別のレンタルサーバ会社を使っていたので被害は免れたが、ひょっとすると被害者になっていた可能性がある。過去エントリー記事で、ファーストサーバの「シリーズ31」について導入を検討していたことを思い出したのだ。

格安マネージドサーバ比較(2011年4月20日現在)
ma-bank.com/item/1272
シリーズ31 - 専用サーバーの【ファーストサーバ】
www.senyu.jp/es31/
[緊急メンテナンスのお知らせ] ファーストサーバ サポートWEB
support2.fsv.jp/info/nw2012...
 
 データが消失した場合、元のデータをリカバリすることに加え、リカバリする際の文字化け対策や各ファイルのパーミッション変更など、復旧作業に莫大な労力が必要とされる。サーバ移転と同様の作業をしなければいけない。特に、MySQLの文字化け対策については、今まで何度も大変な思いをしてきたので、可能ならばやりたくない作業である。
 と言っても、HDDが突然死したり、ファーストサーバ大規模障害のように人為的ミスでデータが消失することもありうる。レンタルサーバ会社の責任うんぬんはともかく、まずはデータを復旧しなければならない。
 そういう訳なので、弊社においてデータ消失が生じた場合について、どのような対策(主にバックアップ)が講じられているか確認してみた。

 弊社の場合、原則的に、CMSを利用したWebサイトであれ、(やや面倒ではあるが)ローカル環境で作成したデータファイルを、レンタルサーバ上にアップロードしている。要するにローカル環境に、大部分のデータが保管されている訳であり、この時点でバックアップのほとんどが完了している。そのため、レンタルサーバ側のデータが消失した場合でも被害は少ない。被害が発生するとすれば、ログファイルやCMSのコメントデータ、EDIUNETのユーザーデータの消失である。(なお、メールデータについては、ローカル環境で受信している)

 このうち、CMSのコメントデータについては投稿と同時に同内容のものをメール受信する仕様になっているので復旧は簡単である。
 EDIUNETのユーザーデータについては、OpenIDを利用することでユーザーのメールアドレス等の個人情報を取得しない仕様にしており、かつ、ユーザー自身が作成するデータは現時点では少ししか存在しないのだが、データ消失した場合、結構困ることになる。また、ログファイルについては重要性は比較的乏しく諦めのつくデータではあるが、これもデータが消失した場合、残念に思うことは間違いない。
 と言うことで、弊社の場合、バックアップが必要なのは、(主にCMSで使っている)データベースと、ログファイル、そして念には念を入れてローカル環境の3つということになる。

1)データベースのバックアップ

 このサイトを含め、NucleusというCMSで構築したサイトが何個があるので、「NP_znBackup」を利用して毎日バックアップを取っている、はずであったが、取れていなかった。。。原因は、サーバ移転後に、バックアップデータを保存するディレクトリを変更していなかったため。早急に修正した(汗)。
 EDIUNETのMySQLについては、AutoMySQLBackupとcronを使って、非公開領域に日別・週別・月別にバックアップを取っている。けれども、バックアップデータをメール送信していなかった。。。どうやら「MAILCONTENT」を「stdout」にしていたのが原因らしい。「MAILCONTENT」を「files」にし、「MAXATTSIZE」を「10000000」に変更した。

2)ログファイルのバックアップ

 全く取っていなかった(笑)。
 これではいけないということで、1日1回動作するcronに、上記「NP_znBackup」のソースを参考にして、ログファイルを添付してメール送信するスクリプトを付け加えた。
 

3)ローカル環境のバックアップ

 最近、外付けHDDにバックアップを取っていなかった。と言うか、普段からWin7マシン2台をネットワークで繋いで作業しているので、これを利用すればいい。
 片方がWin7proなので、「オフラインファイル」機能を使って同期しようと思ったが、これはバックアップではないので却下。「BunBackup」というフリーソフトを使って1日1回自動的にバックすることにした。

 取り合えず、これで二重のバックアップ(ローカル2ヶ所)体制が構築されたわけだ。何か不都合が生じた場合でも、直近のデータについては仕方ないが、被害は最小限にとどまることになる。
 残る問題は、MySQLのデータを文字化けさせないようにリストアすることなのだが、これについては今一つ自信が持てない。テストを繰り返すしかないね。

EDIUNET | PHP/MySQL | 独り言 | 提供サービス | JavaScript