データベースサーバーについて
弊社では、プログラム開発がメインでデータベースサーバーの構築を請けることは少ない。
すでにデータベースサーバーは構築された状態で、開発したプログラムの設定や、プログラム改修に合わせたデータベースの変更を適用したりがメインである。
まれに、この部分もやらせていただくことがあり、その時は、自社で構築している方法を提案させていただいている。
この記事では、この方法の紹介させていただきます。(数社、採用していただいています)
障害発生時の早期復旧、リカバリ機能の多重化に重きを置いて考えています。
ただし、サーバー管理専任者がいるような規模のシステムには向いていません。
また、最悪、前日までのデータが復旧できれば良いということで納得できるシステム向けです。
弊社提案データベースサーバー構築
構成
ディスクディバイスは、3台に分散します。
大容量のディスク1台を分割して使用するのでなく、3台に分散します。
3台の割り当てです。
1.サーバーOSをインストールします。(Cドライブとします)
2.仮想マシン化したデータベースサーバーを組み込みます。(Dドライブとします)
3.バックアップ or 仮想マシンなど。(Eドライブとします)
Hyper-Vについては、本体のライセンスで、2台まで仮想マシンが作成できます。
3の仮想マシンは、テスト用のデータベースを乗せるという使い道もあるし、リモートディスクトップで使うという使い道もあると思います。
3台に分散する意図は、ディスクアクセスを分散させるということを考えてます。
画期的に効果があるわけではないですが、大きなファイルを扱う場合など、ちょっとだけ効果があります。
また、3台まとめて同時に壊れる確率は少ないと思うので、修復コストを減らせると言う狙いもあります。
バックアップ(仮想マシン)
2,3の仮想マシンがとりあえず、稼働状態までインストール出来たら、それぞれの仮想マシンにドライブを互い違いにコピーしておく。
Dドライブの仮想マシンをEドライブに、Eドライブの仮想マシンをDドライブにという具合に。
とりあえず、どちらかのドライブが故障しても、仮想マシンの初期状態のものはバックアップをとって、復旧時の手間を減らす意図です。
Dドライブが壊れた場合、Eドライブのバックアップから仮想マシンは復元でき、最新のデータのバックアップをリストアすることで前日までの状態に戻せることになる。
バックアップ(DBデータ)
DBデータは、バッチファイルなどで、C,D,Eドライブにバックアップをとれば、3カ所にとることになる。
これプラス、NASなどにとっておけば、バックアップ先としては十分であろう。
バックアップバッチファイルは、AM1時ぐらいにスケジュールしておけば、前日分のバックアップはとれることになります。
バックアップのファイル名を工夫すれば、例えば曜日を入れるとかすれば、直近の1週間分はバックアップがあるということになる。
この辺りは、バッチファイルの作り方でいろいろ工夫できると思います。
おわりに
RAID組んでもデータベースのバックアップはしよう
RAIDが組んであれば、バックアップが必要ないと思っているサーバー機器販売事業者もいるようでバックアップをとることをしていないシステムをまれに見ます。
RAID-2を組んだシステムで運用されていたところで、ディスク障害が起きているようなので、一度見てくれないかと言われた会社での出来事です。
RAIDから障害が起きた旨のメッセージのようなものが出たようなのですが、英語でよくわからないメッセージだったのでそのまま無視して使用を続けたようです。
その後何度かサーバーの再起動がされたようで、健全なディスクから故障ディスクへのリカバリされていたようです(ただし、コピー先は故障中なので、一部欠損状態)
何度目かの再起動が行われたとき、逆方向、故障ディスクから健全だったディスクへのリカバリ処理が発生。
結果、最初に故障したディスクの内容が2台のディスクに残るということになってしまいました。(故障後の2台のディスク内容からの推測です)
データ復旧会社に復旧可能か確認したそうなのですが、最初に壊れたディスク時点の情報しか残っておらず、ちょっと古いデータが、取り出せるかどうかということだったようです。
その後、このサーバーがどうなったかは聞いていません。
とりあえず、新しいサーバーではバックアップをするように、弊社で作ったバックアップ用のソフトを渡しておきました。
リストアのテストは、時々しよう
まれにバックアップ用のバッチファイルがまずくて、バックアップがうまく取れていないことがあったりするので、稼働後しばらくしてから一度リストアができるか、テスト機などにリストアのテストを行うようにしておくことをお勧めします。
バックアップとリストアのプログラムのバージョンが異なると、パラメータが若干変わっていたりします(経験済み。そのときはちょっと焦った)。その確認もできます。