フェイルオーバー型クラスタリング構成と、ロードバランス型クラスタリング構成は、原則としてサーバの可用性向上を目的としています。対して、前述した図4ではデータベース構成ファイルが格納されるストレージは1つしか用意されていませんでした。このストレージに障害が発生しても、同じくサービスを提供できなくなります。事前に取っておいたバックアップからリストアするいった復旧作業が必要となるでしょう。
ここでは、「障害の検知から、バックアップからのリストアとリカバリーを行う時間」がシステムの停止時間となります。もしバックアップデータが膨大にあるならば、その分、システムの停止時間は長くなります。可用性要件を満たせないのであれば、ストレージ部分に対しても可用性を高める対策が必要となります。その前に原則として、そもそもストレージはハードウェア障害に備えて、RAID構成にしておく対策も必要です。
ストレージの可用性も、サーバの場合と同様にストレージ装置を複数台用意することで高められます。しかし、ストレージはデータの記録や更新が随時行われる装置です。このため、更新されたデータを「いかに待機側のストレージへ持っていくか」がポイントとなります。
例えばOracle Databaseでは、稼働するデータベースサーバの他にもう1台、同じ構成のデータベースサーバを用意することで、それぞれでデータを同期して複重化する対策を、「Oracle Data Guard」と呼ばれる機能で実現できます。この構成を「Oracle Data Guard構成」と呼びます。
Oracle Data Guard構成では、データベースサーバ上で発生する変更履歴を待機側のデータベースシステムへ転送し、適用することにより、互いのデータを同期します(図5)。データの同期レベルは複数の種類があり、パフォーマンスと可用性のバランスを要件に応じて調節できるようになっています。
待機側のデータベースサーバにもデータが同期されることで、仮に稼働中のサーバやストレージに障害が発生したとしても、待機側のサーバに稼働システムを移すだけでデータベースシステムを復旧できます。
Oracle Data Guardを用いる手段の他に、ストレージに備わるDR(Disaster Recovery:災害復旧)機能を用いてデータ同期を行うことも可能です。例えば、稼働するデータベースサーバ側のI/OをTCP/IPに変換して、待機側でI/Oを再現させることでデータ同期を行います(図6)。
この方法は専用のハードウェア機器や、物理的に離れた場所でもう1つのシステムを用意することから、主に大規模なシステムで使われます。しかし最近では、この「離れた場所のサーバ」をサブスクリプション課金のクラウドサービスでカバーする手段も一般的になってきています。また、Oracle Databaseに限らないシステム構築ができる上に、シンプルなシステム構成で高い可用性要件を満たせる方法とも言えます。
データベースシステムの可用性は、ハードウェアやソフトウェアを複数持つことで高めます。
ポイントは、「どこを対象にした冗長化構成を作るべきかを明確にする」ことです。システムの要件に応じてハードウェアやソフトウェアの機能、最近ではクラウドサービスもうまく活用することで、コスト効果を意識しつつも、高い可用性要件を満たすデータベースシステムを構築できるでしょう。
もちろん、ハードウェアもソフトウェアも日々新しい機能がリリースされています。これまでは高額で手が出なかった構成も、安価に構築できるようになっているかもしれません。メーカーやベンダーの発信する情報にも日々目を配ることも肝要です。
【2017/2/6】2017年時点の状況に合わせて、内容を追記更新しました
【2009/01/19】初版公開
株式会社アシスト データベース技術本部所属。Oracle Databaseのフィールドエンジニアを経て、Oracle DatabaseやEDB Postgres、PostgreSQLのプロダクト担当。吉田類さんの信奉者。3児の父
Copyright © ITmedia, Inc. All Rights Reserved.