大規模な災害やシステム障害によってハードウェアが損傷を受けてしまえば、データベースは停止します。
そこで有用なのが、Oracle RACやOracle Data Guardといった、システムの停止やデータの損失を防ぐための、商用RDBMSです。
本記事では、Oracle RACやOracle Data Guardが、災害や障害によるシステムの停止を防ぐ仕組みを解説します。
将来的にRDBMS製品の導入をお考えの企業様は、ぜひご覧ください。
目次
Oracle Real Application Clusters(Oracle RAC)とは
Oracle Real Application Clustersは、Oracle RAC(以下、Oracle RAC)とよばれるOracle社によって提供されるデータベースの拡張機能の一つです。
複数の関連するサーバーを連携させて、単一のシステムとして動作させます。(クラスタ構成)
Oracle RACでは、すべてのノード(装置)がアクティブであるため、構成するすべてのインスタンスが同じデータベースに常にアクセスすることができます。
つまりHA構成(高可用性構成)とは異なり、メインとスタンバイが切り替わることはない、ということです。
負荷分散型のクラスタ構成を実現し、データベースを拡張する機能を有するOracle RACは、世界の名だたる有名企業で採用されています。
Oracle RACの特徴
Oracle RACには、以下3つの特徴があります。
システムダウンを避けるためにも、理解していきましょう。
特徴①可用性の向上
Oracle RACは、複数のインスタンスで1つのデータベースを管理しています。
そのため、仮にどこかのノードで障害が発生したとしても、ほかのノードに接続を切り替えるフェイルオーバーによって、処理を継続できます。
どこかで障害が起こってもサービスを止める必要がない、つまり可用性を高めることが可能なのです。
<h3>特徴②負荷分散が可能
先述の通り、Oracle RACは、複数のインスタンスで1つのデータベースを管理しているため、どのインスタンスに接続しても同様の処理結果が得られます。
クライアントが接続するインスタンスをランダムに選択したり、接続要求の低いノードに振り分けたりすることで、負荷を分散させられます。
このことから、接続が急増して高負荷の処理が行われても、突然のシステムダウンを防げるのです。
特徴③拡張性の向上
Oracle RACで構成するインスタンスは運用中であっても増減が可能であり、これを追加することによってシステムの処理能力の向上が望めます。
つまり少数のインスタンスでシステムの運用を開始し、データの容量や接続負荷に合わせて、徐々に機能を追加して調整することもできるのです。
企業にとって、計画的なシステム運用が叶うというわけです。
Oracle Data Guardとは
Oracle Data Guardとは、データベースのコピーを自動で作成し、それをスタンバイベースに待機させておく拡張機能のことです。
これによって、異常が発生した際に肩代わりできるよう、コピーを待機させられます。
データを冗長化して、一部の機能が損なわれてシステム全体が停止することを防ぎ、運用の継続を可能としています。
Oracle Data Guardの2つの機能
Oracle Data Guardには、“フィジカル・スタンバイ・データベース”と“ロジカル・スタンバイ・データベース”の2つの機能(モード)があります。
ここでは、双方の機能とそのメリットを解説します。
フィジカル・スタンバイ・データベース
フィジカル・スタンバイ・データベースは、まったく同じデータベースを別のサイトに複製できる機能です。
これは、プライマリサイトと物理的に同じ構成をもつデータベースに対して、同様のREDO情報(変更履歴)を適用することで複製が可能となります。
フィジカル・スタンバイ・データベースは、外部からは完全な同一データベースとして扱うことができます。
ただし、スタンバイサイトは常時リカバリー処理を行っている状態となるため、Active Data Guardの有償オプションに加入してない限り、読み書きは不可能です。
フィジカル・スタンバイ・データベースのメリット
フィジカル・スタンバイ・データベースのメリットは、障害時リカバリーの可用性の高さと、データ保護に優れている点です。
フィジカル・スタンバイ・データベースでは、プライマリ・データベースが停止した場合の時間が最小限になります。
これは、手動のスイッチオーバー機能と自動のフェイルオーバー機能を使用すると、双方のあいだでロールを可逆的に推移できるからです。
また、フィジカル・スタンバイ・データベースは、予期せぬ障害のときでもデータの損失を防げます。
なぜなら、すべてのデータ型、およびプライマリ・データベースがサポートするDDLやDMLの操作性がサポートされているためです。
さらに、ストレージ・レベルの物理的な破損は、スタンバイ・データベースに伝播しないため、データの破損やユーザーエラーにも対応が可能です。
ロジカル・スタンバイ・データベース
ロジカル・スタンバイ・データベースは、プライマリ・データベースを複製するだけでなく、あとから手を加えて異なる構造に変更することもできる機能です。
ロジカル・スタンバイ・データベースはSQL文を実行して更新されますが、これによって、読み取り/書き込みモードで自由に入手や使用、また加工ができます。
つまり、ロジカル・スタンバイ・データベースは、データの保護やレポートの生成を同時にできるというわけです。
なお、ロジカル・スタンバイ・データベースには、データ型や表のタイプ、DDLおよびDML操作のタイプに関して、いくつか制限があります。
サポートの詳細は、Oracle Data Guardの公式ホームページをご覧ください。
Oracle Data Guardの概要および管理:https://docs.oracle.com/cd/E16338_01/server.112/b56302/data_support.htm#CHDGFADJ
ロジカル・スタンバイ・データベースのメリット
データのリカバリーにくわえて高い可用性を有しているのが、ロジカル・スタンバイ・データベースです。
フィジカル・スタンバイ・データベースと比較すると、別種類の障害からの保護や、リソースの効率化が期待できます。
ロジカル・スタンバイ・データベースでは、過去の更新を再度行うREDOを分析してデータベース上に変更点を再構成するため、同一データのデータベースを複製可能です。
同じプライマリサーバーに対して両方を保持できるため、プライマリで特定の種類のハードウェア障害を検出し、保護します。
さらに、プライマリ・データベース上の変更を複製しているあいだ、ロジカル・スタンバイ・データベースは読み取りまたは書き込み用に、オープン状態になります。
プライマリ・データベースは使用できませんが、ロジカル・スタンバイ・データベースは使用できるようになるので、効率よくリソースを使用できるわけです。
Oracle Data Guardの保護方針の種類
Oracle Data Guardには、“最大可用性”“最大保護”“最大パフォーマンス”の3つの保護モードが存在します。
保護モードはデータの保護や、システムの性能など、何を優先したいかによって使い分けることが推奨されています。
それでは、それぞれの解説を見ていきましょう。
最大可用性
最大可用性のモードでは、プライマリ・データベースの可用性を低下させないために、可能な範囲でもっとも高いレベルのデータ保護を実行します。
なお、すべてのREDOデータがオンラインREDOに書き込まれるまでは、トランザクションは実行されません。
また、以下のいずれかに当てはまる場合も同様です。
トランザクションが確定されないパターン
- REDOがスタンバイで受信され、スタンバイREDOログが起動し、確認がプライマリに返された
- REDOが受信され、スタンバイREDOログへ書き込まれて、応答がプライマリに返された
1つ以上の同期スタンバイから確認を受信できない場合、プライマリ・データベースは最大パフォーマンスのモードと同じように動作します。
その結果、同期スタンバイ・データベースへのREDOストリームの書き込みが再び可能になるまで、プライマリ・データベースの可用性を維持できるのです。
この保護モードでは、万が一プライマリ・データベースに障害が発生した場合、データが消失しないことを保証します。
ただし、保証するのは、Oracle Data Guard構成で1つ以上の同期スタンバイが存在する場合のみです。
最大保護
最大保護は先述の最大可用性と似ていますが、障害時にエラーが起きた場合でも高いレベルでデータを保護できます。
最大保護では、スタンバイ・データベースからの応答が不可能になると、プライマリ・データベースは停止します。
また、保護されないトランザクションの処理は継続できません。
これは、プライマリ・データベースの可用性よりもデータの保護を優先するためです。
コピーされた複数のスタンバイ・データベースを使用して、プライマリ・データベースを最大保護することで、障害による稼働の停止を防ぎます。
最大パフォーマンス
最大パフォーマンスでは、プライマリ・データベースのパフォーマンスに影響しない範囲で、最高レベルのデータ保護を提供します。
一連の処理によって生成された、すべてのREDOデータがオンラインやログに書き込まれた直後に、そのトランザクションの結果を確定することで実現されます。
この書き込みは同期せずに実施されるため、REDOデータの送信に必要な時間およびスタンバイ・データベースからの応答の可否は、パフォーマンスに影響を与えません。
ただし最大パフォーマンスは、最大可用性に比べて、データ保護が若干弱い傾向にあります。
これによって、プライマリ・データベースのパフォーマンスへの影響を、最小限に抑えます。
Oracle RACとOracle Data Guardの違い
これまでで、Oracle RACとOracle Data Guardは、どちらもデータベースの稼働率を上げ、障害を受けても、稼働できることがおわかりいただけたかと思います。
目的は、ほぼ同一のように感じるかもしれませんが、両者の本来の目的は多少異なります。
RACは拡張性、いわば処理効率の向上、Oracle Data Guardは、可用性の向上がメインです。
どのように構築していくかは、データベースの要件や障害耐性の必要性によって決めなければなりませんが、2つは性質が異なるだけで併用は可能です。
Oracle RACやOracle Data Guardはデータベースの稼働率を上げ、システムの停止を防止する
本記事では、Oracle RACやOracle Data Guardの機能を詳しく解説しました。
Oracle RACは処理効率の向上、Oracle Data Guardは可用性の向上に特化しており、両者は併用可能です。
どちらも複数の拠点でのデータベース運用を可能とし、災害や障害によるシステムの長期停止を回避します。
コーソルでは、Oracleのデータベースを導入したいものの、「効果的に運用できるのか不安……」という企業様に向けて、導入サポートを行っております。
高い技術を身につけたエンジニアが、企業様のニーズにお応えいたしますので、お気軽に弊社にご相談ください。