| 2003年7月10日
『どっとねっとと雑多な日々 8』
GDNJ(ゴッドドットネットジャパン)が 2003 / 07 / 01 にシステムリニューアルされました。
http://www.gotdotnet.com/japan/
いままでは ML ベースなシステムでしたが、ASP.NET + .NET Alerts の組み合わせた掲示板システムに改修されたので、.NET
に興味があるけれど、ML に参加するのはちょっとと戸惑っていた方は、ぜひ参加してみてください。
なお、ベースになったフォーラムのシステムは
http://www.asp.net/Default.aspx?tabindex=7&tabid=41
にある ASP.NET Forums です。
また、近々 eXperts Connection というコミュニティがオープンします。
http://www.microsoft.com/japan/communities/online/default.mspx
ここでは、ASP.NET Forums をローカライズして、そのソースを公開していく予定ですので、ぜひ参加してみてください。
さて、今回は .NET Framework とはあまり関係ない実話を書きたいと思います。範囲的には堀川氏の範囲になりますが。
とある日、会社に出社して、メールのチェック(大体 2000 通前後たまっています。)に勤しんでいると、内線がなる。すごくいやな予感がしたけど、とりあえず出てみる。
相手 「おがわさぁ〜ん、たすけてぇ〜。」
おがわ「女兼です。」
と答えるが、トラぶっている様子なので、話を聞くことにしました。
おがわ「どうしたんですか?」
相手 「Project Server が動かないんですが。」
おがわ「どう動かないんですか?」
相手 「Project Server に Web からログインできないんです。データベース
を見たら Project Server のデータベースが未確定になっているのが
関係してます。リブートしたら直りますか?」
ここまで話を聞いて、少々青くなりました。
この人のマシンの設定は私がやったんで、バックアップ運用を開始していないのを知っているし、SQL Server の保守計画がうまくいっていないのも知っていたからです。
さて、どうしたもんかと考えていましたが、会議の時間が刻々と迫っているので、調べようもありません。
とりあえず
おがわ「 XX 君にメールしますので、メールの内容を実行して結果を教えてく
ださいと伝えてください。」
と答え、速攻でメールを書き出す。
内容はたいしたことではないのですが
BACKUP LOG ProjectServer TO DISK='D:\PS.log' WITH NO_TRUNCATE
GO
として、何はともあれトランザクションログを取得できるか確認する必要があるためです。
※SQL Server 7.0 以上から使えるようにはなっていますが、SQL Server 7.0 では正しく取得できない場合があり、それを解消するには最新のサービスパ
ックを適用しなければならないので、皆さんは注意してください。 私の場合は SQL Server 2000 だったので、取れるかどうかが重要でした。
会議が終わって、結果を聞くとできているとのこと。
はぁ、よかったと胸をなでおろしました。
原因を追究するよりとりあえず復旧が優先だったため、ここから RESTORE をかけていきました。
かなり前のバックアップがあり、すべてのトランザクションログ( 5G )が残っていたので、時間がかかりましたが、何とか復旧できました。
さて、原因はなんだったかという調査をしてみると何のことはない。データベースのステータス異常になっていたためのようです。sp_resetstatus
プロシージャを作成して回避できたようでした。
※参考
[トラブルシューティング]
+ [サーバーおよびデータベースに関するトラブルシューティング]
+ [問題ありフラグのリセット]
なぜ、ステータスが異常になってしまった原因はファイル拡張を有効にしていたんですが、拡張が % ごとになっていたため、 5G
のファイルの 10 % の拡張( 500MB )を行っている最中におかしくなったというだけだったようです。
問題がなかったからいいものの、手順を間違えていたらデータが完全にロストしていたかもしれません。。。
教訓
1.何があっても
BACKUP LOG データベース名 TO DISK='ファイルパス' WITH NO_TRUNCATE
でトランザクションログを取る。
2.バックアップ手法は 2 重 3 重に用意する。
テープだけではなく、データベースの復旧モデルをシンプルではないも
のに変更したり、定期的にディスクにバックアップを出力するようにする。
3.テープで必ずバックアップを取る。
世代管理も重要です。
4.復旧のリハーサルは絶対にやっておくべき。
過去に似たような障害に対応したことがあるので何とかなりましたが、
ぶつけ本番だとかなりつらいので、必ず体験しておくことが重要です。
5.ファイルの自動拡張の設定を見直すべき。
% になっていると思わぬ障害が発生しますので、最初からある程度拡張
しておき、無駄にファイル拡張が起こらないように設計しておくことが肝心かと。
最後に、.NET と関係ないじゃんとおっしゃる方もいるかと思いますが、実は .NET の大型プロジェクトのプロジェクト管理のために
Project Server を導入したもので、遠からずという感じです、ハイ。(^_^;)
|