大阪で開催されたdb tech showcaseでは富士通株式会社の杉山幸吉氏が登壇し、Symfowareの高信頼性を実現するための技術詳細を解説した。高信頼性の実現にはハードウェアの性能を引き出す技術やデータ圧縮技術など多様にあるものの、今回はサーバー切り替えを行うクラスタ方式とミラー方式に焦点が当てられた。ビジネスの継続で重要視されるデータ保護とシステムの継続には欠かせない技術だ。具体的にどのような仕組みで切り替えが行われるのか、実際に切り替えに要する時間はどのくらいか、実践的な内容に踏み込んで杉山氏は解説した。
クラスタ方式
まずはクラスタ方式。クラスタ方式ではデータベースサーバーが運用(本番)系と待機系に分かれるものの、データベース(ストレージ)は共有する。サーバーに何か問題が生じればサーバーを切り替える方式だ。このクラスタ方式では待機系の状態により、3通りに分類することができる。切り替え時間の長い順からウォームスタンバイ、ホットスタンバイ、高速ホットスタンバイとなる。
ウォームスタンバイから待機系でどのような処理が行われるか見て行く。運用系でシステムダウンが発生すると、クラスタソフトウェアがネットワークを切り替えた後、待機系が準備を開始する。切り替え処理はDBスペース情報の読み込み、OSに対する物理オープン、ログ読み込み、ダウンリカバリー(パラレルリカバリー)、共用バッファ準備、コネクション再接続が行われ、晴れて業務再開となる。これら一連の処理を行う場合、大規模なデータベースでは分単位の時間を要する。
このウォームスタンバイにおけるダウンリカバリー段階ではパラレルリカバリーという技術が用いられており、高速化のために並列化が行われているという。ログの読み込みやリカバリー用のスレッドなどが並列で処理され、リカバリー時間を短縮できるというわけだ。
より高速に切り替えできるのがクラスタ方式のホットスタンバイだ。こちらはウォームスタンバイにおけるDBスペースの読み込み、OSに対する物理オープン、共有バッファ準備をまとめて「プレオープン」としてシステムダウンの前に実施しておけるため、この部分が短縮できる。コネクション再接続もプレコネクションに代わり、高速化する。またダウンリカバリー段階ではパラレルリカバリーのほかにキャッシュリカバリー技術も加わり、さらに高速化される。ホットスタンバイはウォームスタンバイと比較してより短時間で業務再開にこぎつける。
さらに高速ホットスタンバイではホットスタンバイに比べてダウンリカバリー段階がより高速になる。ここで使われる技術はフラッシュトリートメントリカバリーと呼ばれている。通常運用時はネットワーク経由でトランザクションログを運用系から待機系のメモリに送信するようにしており、障害発生時には待機系に送られたメモリ上のログから読み込むため高速に切り替えできるようになっている。
ここまでがクラスタ方式となる。しかしクラスタ方式ではどうしても切り替えに伴うダウンリカバリー段階の処理は避けられない。また本当に障害が発生したことを確認するため「けっこう踏ん張る」のだそうだ。「踏ん張る」とは、障害が起きてもクラスタがOSなどに誤検知がないか等の問い合わせを行うために、すぐに障害と判断しない、切り替えないということだ。そのため高速ホットスタンバイでも切り替えには30秒程度を要する。ここがクラスタ方式の限界であり、30秒という切り替え時間を許容可能なシステム向けと言えるだろう。
一方、健全に動作しているシステムがもう一つあるので、異常検知すると、検知した方を切り捨て高速にもう一つのシステムに切り替えるのがミラー方式だ。