7 シャード・レベルの高可用性

Oracle Shardingは、シャード・レベルの高可用性と障害回復のためにOracle Databaseレプリケーション・テクノロジに統合されています。

次の各項で、Oracleのレプリケーション・テクノロジを使用してシャード・データベースの高可用性を実現する方法を説明します。

シャーディングとレプリケーションについて

Oracle Shardingは、Oracleのレプリケーションおよび障害時リカバリ・テクノロジであるOracle Data GuardおよびOracle GoldenGateと緊密に統合されています。

レプリケーションによって高可用性、障害回復、および読取りのスケーラビリティ向上が実現します。レプリケーションの単位にはシャード、シャードの一部またはシャードのグループがあります。

シャード・データベースのレプリケーション・トポロジは、GDSCTLコマンド構文を使用して宣言的に指定します。2つのテクノロジ(Oracle Data GuardとOracle GoldenGate)のいずれかを選択して、データをレプリケートできます。Oracle Shardingは指定されたレプリケーション・トポロジを自動的にデプロイし、データ・レプリケーションを有効にします。

シャード・データベースの可用性は、1つ以上のシャードが停止したり、処理速度が低下しても影響されません。個別のシャードレベルの高可用性(Oracle Active Data GuardまたはOracle GoldenGate)を提供するために、レプリケーションが使用されます。レプリケーションはシャード・データベースが作成されると自動的に構成およびデプロイされます。オプションで、シャードレベルの高可用性のために、レプリケーションによって補完されるOracle RACを使用すると、クラスタが停止した場合にシャードレベルのデータの可用性を維持できます。Oracle Shardingは、計画外の停止が発生したときに、データベース接続をシャードからレプリカに自動的にフェイルオーバーします。

シャードの高可用性としてOracle GoldenGateを選択するケース

Oracle Shardingの高可用性ソリューションとしてOracle GoldenGateを採用するのはどのような場合でしょうか。

次の場合は、高可用性ソリューションとしてOracle GoldenGateが適しています。

  • すべてのシャードが読取り/書込みである場合。Active Data Guardでは、DR/バックアップ・シャードが読取り専用になります。

  • シャードをより柔軟にデプロイする必要がある場合。個々のシャードを異なるオペレーティング・システムまたは異なるデータベース・バージョンに配置できます。

  • 1つのシャードグループ内であっても、データの更新可能なコピーが1つ以上存在します。たとえば、Oracle GoldenGateでレプリケーション・ファクタを4に設定すると、データの読取り/書込みコピーを4個作成して更新できます。

関連項目:

Fusion MiddlewareのOracle GoldenGateマイクロサービス・アーキテクチャの使用ガイドのOracle GoldenGateシャーディングの使用(Oracle ShardingでのOracle GoldenGateの使用の詳細)

シャード・データベースでのOracle Data Guardの使用

Oracle Data Guardのレプリケーションは、高可用性およびデータ保護のために、シャード(プライマリ)の1つ以上の同期されたコピー(スタンバイ)を維持します。スタンバイはローカルまたはリモートにデプロイでき、Oracle Active Data Guardを使用する場合は、読取り専用アクセスでオープンすることもできます。

Oracle Data Guardは、シャーディング方法としてシステム管理、ユーザー定義またはコンポジットを使用するシャード・データベースのレプリケーション・テクノロジとして使用できます。

システム管理のシャード・データベースでのOracle Data Guardの使用

システム管理またはコンポジットのシャーディングの場合、レプリケーションの論理単位はシャードグループと呼ばれるシャードのグループです。システム管理のシャーディングの場合、シャード・データベースに格納されるすべてのデータがシャードグループに含まれます。データはシャードグループを構成するシャード間で、均一なハッシュによってシャードされます。シャードグループに属するシャードは通常、同じデータ・センターにあります。シャードグループ全体を、同じまたは異なるデータ・センターの1つ以上のシャードグループに完全にレプリケートできます。

次の図は、システム管理シャーディングとともにData Guardレプリケーションが使用される方法を示しています。図に示す例には、プライマリ・シャードグループのShardgroup 1、および2つのスタンバイ・シャードグループのShardgroup 2とShardgroup 3があります。Shardgroup 1はData Guardプライマリ・データベース(シャード1-3)から構成されます。Shardgroup 2は、同じデータ・センターに存在し、同期レプリケーション用に構成されたローカル・スタンバイ・データベース(シャード4-6)から構成されます。Shardgroup 3は、異なるデータ・センターに存在し、非同期レプリケーション用に構成されたリモート・スタンバイ(シャード7-9)から構成されます。この構成ではOracle Active Data Guardが有効なため、各スタンバイが読取り専用でオープンされています。

図7-1 Data Guardレプリケーションを使用するシステム管理のシャーディング

図7-1の説明が続きます
「図7-1 Data Guardレプリケーションを使用するシステム管理シャーディング」の説明

レプリケーションの論理単位としてのシャードグループという概念によって、レプリケーションの実装の詳細がユーザーには隠されています。Data Guardの場合、レプリケーションはシャード(データベース)のレベルで実行されます。前の図のシャード・データベースは、レプリケートされた3つのシャードのセット({1, 4, 7}、{2, 5, 8}および{3, 6, 9})で構成されています。レプリケートされたシャードの各セットは、ファスト・スタート・フェイルオーバー(FSFO)が有効なData Guard Broker構成として管理されます。

レプリケーションをデプロイするには、シャードグループのプロパティ(リージョン、ロールなど)を指定し、そこにシャードを追加します。Oracle ShardingによってData Guardが自動的に構成され、レプリケートされたシャードの各セットに対してFSFOオブザーバが起動されます。さらに、読取り専用ワークロード、ロール・ベースのグローバル・サービス、レプリケーション・ラグのロード・バランシング、および地域ベースのルーティングが提供されます。

次のGDSCTLコマンドを実行して、前の図に示されている構成例をデプロイします。

CREATE SHARDCATALOG –database host00:1521:shardcat –region dc1,dc2

ADD GSM -gsm gsm1 -listener 1571 –catalog host00:1521:shardcat –region dc1
ADD GSM -gsm gsm2 -listener 1571 –catalog host00:1521:shardcat –region dc2
START GSM -gsm gsm1
START GSM -gsm gsm2

ADD SHARDGROUP -shardgroup shardgroup1 -region dc1 -deploy_as primary 
ADD SHARDGROUP -shardgroup shardgroup2 -region dc1 -deploy_as active_standby 
ADD SHARDGROUP -shardgroup shardgroup3 -region dc2 -deploy_as active_standby 

CREATE SHARD -shardgroup shardgroup1 -destination host01 -credential oracle_cred 
CREATE SHARD -shardgroup shardgroup1 -destination host02 -credential oracle_cred 
CREATE SHARD -shardgroup shardgroup1 -destination host03 -credential oracle_cred 
...
CREATE SHARD -shardgroup shardgroup3  -destination host09 -credential oracle_cred

DEPLOY

ユーザー定義のシャード・データベースでのOracle Data Guardの使用

ユーザー定義のシャーディングの場合、レプリケーションの論理(および物理)単位はシャードです。シャードはシャードグループに統合されません。各シャードとそのレプリカがシャード領域を構成し、これが1つのData Guard Broker構成に対応します。シャードスペースごとに個別にレプリケーションを構成できます。異なるデータ・センターに存在する異なる数のスタンバイをシャード領域に含めることができます。Data Guardレプリケーションを使用するユーザー定義シャーディングの例を次の図に示します。

図7-2 Data Guardレプリケーションを使用するユーザー定義のシャーディング

図7-2の説明が続きます
「図7-2 Data Guardレプリケーションを使用するユーザー定義シャーディング」の説明

前の図に示されているData Guardレプリケーションを使用するユーザー定義シャード・データベースの例をデプロイするには、次のGDSCTLコマンドを実行します。

CREATE SHARDCATALOG -sharding user –database host00:1521:cat –region dc1,dc2,dc3

ADD GSM -gsm gsm1 -listener 1571 –catalog host00:1521:cat –region dc1
ADD GSM -gsm gsm2 -listener 1571 –catalog host00:1521:cat –region dc2
ADD GSM -gsm gsm3 -listener 1571 –catalog host00:1521:cat –region dc3
START GSM -gsm gsm1
START GSM -gsm gsm2
START GSM -gsm gsm3

ADD SHARDSPACE -shardspace shardspace_a 
ADD SHARDSPACE -shardspace shardspace_b
ADD SHARDSPACE -shardspace shardspace_c

CREATE SHARD -shardspace shardspace_a –region dc1 -deploy_as primary  -destination 
host01 -credential oracle_cred -netparamfile /home/oracle/netca_dbhome.rsp

CREATE SHARD -shardspace shardspace_a –region dc1 -deploy_as standby  -destination 
host04 -credential oracle_cred -netparamfile /home/oracle/netca_dbhome.rsp

CREATE SHARD -shardspace shardspace_a –region dc2 -deploy_as standby  -destination 
host06 -credential oracle_cred -netparamfile /home/oracle/netca_dbhome.rsp

CREATE SHARD -shardspace shardspace_a –region dc3 -deploy_as standby  -destination 
host08 -credential oracle_cred -netparamfile /home/oracle/netca_dbhome.rsp

CREATE SHARD -shardspace shardspace_b –region dc1 -deploy_as primary  -destination 
host08 -credential oracle_cred -netparamfile /home/oracle/netca_dbhome.rs
...

CREATE SHARD -shardspace shardspace_c –region dc3 -deploy_as standby  -destination 
host10 -credential oracle_cred -netparamfile /home/oracle/netca_dbhome.rsp

DEPLOY

コンポジット・シャード・データベースでのOracle Data Guardの使用

コンポジット・シャーディングの場合、ユーザー定義のシャーディングと同様にシャード・データベースが複数のシャード領域から構成されます。ただし、各シャード領域には、レプリケートされたシャードではなくレプリケートされたシャードグループが含まれます。

図7-3 複合シャーディングとData Guardレプリケーション

図7-3の説明が続きます
「図7-3 複合シャーディングとData Guardレプリケーション」の説明

次のGDSCTLコマンドを実行して、前の図に示されている構成例をデプロイします。

CREATE SHARDCATALOG -sharding composite –database host00:1521:cat –region dc1,dc2,dc3

ADD GSM -gsm gsm1 -listener 1571 –catalog host00:1521:cat –region dc1
ADD GSM -gsm gsm2 -listener 1571 –catalog host00:1521:cat –region dc2
ADD GSM -gsm gsm3 -listener 1571 –catalog host00:1521:cat –region dc3
START GSM -gsm gsm1
START GSM -gsm gsm2
START GSM -gsm gsm3

ADD SHARDSPACE -shardspace shardspace_a 
ADD SHARDSPACE -shardspace shardspace_b

ADD SHARDGROUP -shardgroup shardgroup_a1 –shardspace shardspace_a -region dc1 
-deploy_as primary 
ADD SHARDGROUP -shardgroup shardgroup_a2 –shardspace shardspace_a -region dc1     
-deploy_as active_standby
ADD SHARDGROUP -shardgroup shardgroup_a3 –shardspace shardspace_a -region dc3     
-deploy_as active_standby 
ADD SHARDGROUP -shardgroup shardgroup_b1 –shardspace shardspace_b -region dc1 
-deploy_as primary 
ADD SHARDGROUP -shardgroup shardgroup_b2 –shardspace shardspace_b -region dc1     
-deploy_as active_standby 
ADD SHARDGROUP -shardgroup shardgroup_b3 –shardspace shardspace_b -region dc2     
-deploy_as active_standby 

CREATE SHARD -shardgroup shardgroup_a1 -destination host01 –credential orcl_cred  
...

CREATE SHARD -shardgroup shardgroup_b3 -destination host09 -credential orcl_cred 

DEPLOY

シャード・データベースでのOracle GoldenGateの使用

Oracle GoldenGateは、すべてのシャードが書込み可能で、各シャードをシャードグループ内の別のシャードに部分的にレプリケートできるファイングレイン・アクティブ-アクティブ・レプリケーションのために使用されます。

Oracle GoldenGateでは、レプリケーションがチャンク・レベルで処理されます。たとえば、次の図のShardgroup 1では、各シャードに格納されているデータの半分が1つのシャードにレプリケートされ、残りの半分が別のシャードにレプリケートされます。いずれかのシャードが使用できなくなった場合、そのワークロードはシャードグループ内の他の2つのシャードに分割されます。フェイルオーバー先が複数存在し、障害が発生したシャードのすべてのワークロードを1つのシャードで処理する必要がないため、シャード障害の影響が軽減されます。

図7-4 GoldenGateレプリケーションを使用するシステム管理シャーディング

図7-4の説明が続きます
「図7-4 GoldenGateレプリケーションを使用するシステム管理シャーディング」の説明

Oracle GoldenGateレプリケーションでは、シャードグループにシャード表内の各行の複数のレプリカを含めることができるため、シャードグループ内に高可用性が提供され、Data Guardレプリケーションの場合のようにシャードグループのローカル・レプリカを作成する必要はありません。シャードグループ内で各行がレプリケートされる回数は、シャードグループのレプリケーション・ファクタと呼ばれ、構成可能なパラメータです。

障害時リカバリ機能を提供するため、シャードグループを1つ以上のデータ・センターにレプリケートできます。シャードグループの各レプリカは、異なる数のシャード、レプリケーション・ファクタ、データベース・バージョンおよびハードウェア・プラットフォームを持つことができます。ただし、レプリケーションはチャンク・レベルで実行されるため、すべてのシャードグループ・レプリカが同じ数のチャンクを持つ必要があります。

前の図のShardgroup 2は、Shardgroup 1と同じデータを含んでいますが、異なるデータ・センターにあります。どちらのデータ・センターのシャードも書込み可能です。どちらのシャードグループでもデフォルトのレプリケーション・ファクタ(2)が使用されます。

Shardgroup 2には2つのシャードのみが含まれており、レプリケーション・ファクタが2であるため、シャードは完全にレプリケートされており、シャード・データベースに格納されているすべてのデータが各シャードに含まれています。これは、シャード間を移動せずにこれらのシャードにルーティングされた問合せを実行できることを意味します。このシャードグループにはフェイルオーバー先が1つしかないため、シャードが停止した場合、他のシャードへの負荷が2倍になります。

Oracle Shardingは、異なるシャードの同じ行に対して実行される競合更新の数が最小限になるように設計されています。これは、ハッシュ値の範囲ごとにマスター・チャンクを指定し、対応するデータのほとんどのリクエストをこのチャンクにルーティングすることで実現されます。

状態遷移(チャンクの移動や分割、シャードの起動と停止など)のために、更新の競合を避けられない場合があります。トランザクションの待機時間を最小限にするため、ユーザーが意図的に競合を発生させる場合もあります。このような場合、Oracle GoldenGateは挿入と削除の競合を含むすべての種類の競合を処理する自動的な競合検出および解決機能を提供します。

シャードを作成する前に、いくつかの前提条件があります。

  • スケジューラに登録します(GDSCTLのcreate shardを使用する場合)。

  • サイトセキュリティ・ウォレットまたはクライアント証明書とサーバー証明書を準備します。

  • Oracle GoldenGateをインストールし、シャーディング・オプションを使用して1つ以上のセキュアなデプロイメントを追加し、GoldenGateサービスおよびサーバーを起動します。

  • 各Oracleホームで、GoldenGateデプロイメントの追加時に使用するクライアント・ウォレットのコピーを作成し、それを$ORACLE_BASE/admin/ggshd_wallet/に配置します。

  • GoldenGateのインストール・ホームからPL/SQLパッケージをロードします。GDSCTLのCREATE SHARDを使用してシャードを作成している場合、このステップはシャード・カタログにのみ適用されます。GDSCTLのADD SHARDを使用している場合、シャード・カタログおよびすべてのシャードに適用されます。

前の図に示されている構成例をデプロイするには、次のGDSCTLコマンドを実行します。

CREATE SHARDCATALOG -database host00:1521:shardcat -chunks 60
 -user 'gsmcatuser/gsmcatuser_password' 
 -repl OGG -sharding system -sdb orasdb
ADD GSM -gsm gsm1 -listener 1571 –catalog shard-dir1:1521:shardcat -localons 3841
ADD GSM -gsm gsm2 -listener 1571 –catalog shard-dir1:1521:shardcat -localons 3841
START GSM -gsm gsm1
START GSM -gsm gsm2
CONFIGURE -timeout 900
ADD REGION -region dc1
ADD REGION -region dc2
MODIFY GSM -gsm gsm1 -region dc1
MODIFY GSM -gsm gsm2 -region dc2
ADD SHARDGROUP -shardgroup shardgroup1 -region dc1 -repfactor 2 
ADD SHARDGROUP -shardgroup shardgroup2 -region dc2 -repfactor 2  


CREATE SHARD -shardgroup shardgroup1 -destination host01 -credential oracle_cred        
 -netparam /home/oracle/netca_dbhome.rsp -gg_service host01:9900/deployment_name
 -gg_password ggadmin_password -dbparamfile /home/oracle/dbparams01.tmp
 -dbtemplatefile /home/oracle/sharddb01.dbt
 
CREATE SHARD -shardgroup shardgroup1 -destination host02 -credential oracle_cred      
 -netparam /home/oracle/netca_dbhome.rsp -gg_service host02:9900/remote_scheduler_agent
 -gg_password ggadmin_password -dbparamfile /home/oracle/dbparams02.tmp
 -dbtemplatefile /home/oracle/sharddb02.dbt 

CREATE SHARD -shardgroup shardgroup1 -destination host03 -credential oracle_cred      
 -netparam /home/oracle/netca_dbhome.rsp -gg_service host03:9900/remote_scheduler_agent
 -gg_password ggadmin_password -dbparamfile /home/oracle/dbparams03.tmp
 -dbtemplatefile /home/oracle/sharddb03.dbt
 
CREATE SHARD -shardgroup shardgroup2  -destination host04 -credential oracle_cred      
-netparam /home/oracle/netca_dbhome.rsp -gg_service host04:9900/remote_scheduler_agent
 -gg_password ggadmin_password -dbparamfile /home/oracle/dbparams04.tmp
 -dbtemplatefile /home/oracle/sharddb04.dbt
 
CREATE SHARD -shardgroup shardgroup2  -destination host05 -credential oracle_cred      
-netparam /home/oracle/netca_dbhome.rsp -gg_service host05:9900/remote_scheduler_agent
 -gg_password ggadmin_password -dbparamfile /home/oracle/dbparams05.tmp
 -dbtemplatefile /home/oracle/sharddb05.dbt


DEPLOY

前の例では、デプロイメント中にCREATE SHARDを使用して新しいシャードを作成していることに注意してください。CREATE SHARDのかわりにADD SHARDを使用することもできますが、ADD SHARDによる方法は、データベース・シャードに変換できる白紙の状態のデータベース・インスタンスがすでに存在することが前提となります。

ノート:

Data GuardまたはActive Data Guardを使用するシャーディング・レプリケーションとは異なり、Oracle GoldenGateは手動でデプロイできません。DEPLOYコマンドを使用して行う必要があります。

Oracle GoldenGateは、PDBをシャードとしてサポートしません。

関連項目:

Fusion MiddlewareのOracle GoldenGateマイクロサービス・アーキテクチャの使用ガイドのOracle GoldenGateシャーディングの使用(Oracle ShardingでのOracle GoldenGateの使用の詳細)