PR

Q 質問 サーバー機の障害などに備え,Oracleのバックアップ・サーバーを準備しようと思います。どのような方法があるのでしょうか

A 回答 クラスタ構成とレプリケーションの2つの方法が利用できますが,障害時のサービス・レベルの見極めが先決です


 複数台のサーバーを用意し,Oracleの耐障害性を高めるには,主に2つの方法があります。一つは,「Oracle Parallel Server Option(OPS)」を利用し,クラスタ化した複数台のサーバーからOracleデータベースを共有する方法。もう一つは,複数のサーバー上でそれぞれOracleを稼働させ,Oracleのレプリケーション(複製)機能を利用して,データベース間の同期を取る,という方法です(図1[拡大表示])。レプリケーションの代わりにスタンバイ・データベースという機能も利用できます。どの方法を使うかは,障害対策にかけられるコストや障害時にデータをどこまで保証するかなどで決まります。まずは,障害時に求めるサービス・レベルを見極める必要があります。

図1●複数台のサーバーでOracleの耐障害性を高める
クラスタとレプリケーションのどちらを使っても,複数台のサーバー環境でOracleの耐障害性を高められる。どちらを使うかを決めるには,必要なサービス・レベルの見極めが欠かせない

クラスタ構成は負荷分散も可能

 では,クラスタ構成にした場合の機能的なメリット/デメリットから見ていきましょう。Oracleをクラスタ構成で稼働させるためには,各サーバーにOPSを導入し,各サーバー上のインスタンス(Oracleのプロセス)から,共有ディスク上のデータベースをマウントします(図1の左)。

 この構成の主なメリットは,大きく3つにまとめられます。それは,(1)通常時はサーバー間の負荷分散が可能,(2)データベースを共有するため,データベース間の同期処理が不要,(3)サーバーの数を増やすことで耐障害性のレベルを高められる,ということです。

 クラスタ構成で一つのサーバーに障害が発生した場合,該当サーバーに接続していたクライアントは,明示的に他の正常なサーバーに接続し直すことで業務を継続できます。さらに,Oracle8の透過的アプリケーション・フェイルオーバー(TAF)という機能を利用すれば,クライアントの接続を自動的に切り替えることも可能です。

 ただし,通常時に複数のサーバーから同時に同一データを更新する場合は注意が必要です。各サーバー間でメモリー上のデータの整合性を保つ機構が働くため,オーバーヘッドが生じます。できるだけ,そうならないようにアプリケーション側で配慮が必要です。また,共有ディスクに障害が発生した場合の影響が大きいため,「信頼性の高いディスク装置を利用すると共に,ミラーリングなどで可用性を高めることも考慮すべき」(日本オラクル)でしょう。クラスタを構築するためにはOPSに加え,サーバー・ベンダーが用意するOSレベルのクラスタリング機能も必要になります。

レプリケーションの負荷に注意

 一方,レプリケーションを利用した方法は,特別なソフトウエアやハードウエアを用意する必要がないことが,最大のメリットです。複数のサーバー上でOracleを稼働させておき,レプリケーションによってデータの同期を取ります。障害時にクライアントの接続先サーバーを切り替える方法は,先のクラスタ構成と同様です。

図2●Oracleのスタンバイ・データベース機能
本番データベースのアーカイブ済みREDOログ・ファイルを転送し,スタンバイ・データベースに反映する

 レプリケーションを利用した場合のデメリットは,ネットワーク上のトラフィックが増えると共に,レプリケーションの負荷がサーバー機にかかることです。これらの負荷は,レプリケーションの頻度によって調整できます。頻度を落とせばこれらの負荷を減らせますが,障害時に保証できるデータの鮮度が落ちてしまいます。反対に,レプリケーションを頻繁に行えばデータの鮮度は保てますが,レプリケーション処理によって通常時の性能が劣化する恐れがあります。レプリケーションを利用する場合は,通常時の性能と障害時のデータ鮮度とのトレードオフを見極めた上で使うべきでしょう。

 Oracleにはいくつかのレプリケーションの種類がありますが,障害時のデータベースの利用方法によって,選択するモードは変わってきます。障害時にも更新処理をしたいのであれば非同期のマルチマスタ・レプリケーションを使う必要がありますが,参照処理だけで良いのであれば読み取り専用スナップ・ショットで構いません。

 また,レプリケーションの代わりにOracleのスタンバイ・データベース機能を利用し,待機用のデータベースを構築する方法もあります(図2[拡大表示])。これは,本番データベースのアーカイブ済みログ・ファイルをスタンバイ・データベースに転送し,適用するという仕組みです。レプリケーションに比べるとデータの鮮度は落ちてしまいますが,本番サーバーにレプリケーション処理の負荷がかからないことがメリットです。この機能はOracle7.3から利用可能ですが,Oracle8iではログを自動的に転送して適用するなどの機能拡張が施されています。

(本誌)