Always On可用性グループ内のデータベースのキャプチャおよび配信要件の概要

SQL ServerのためのOracle GoldenGateは、Always On可用性グループのプライマリ・レプリカまたは読取り専用同期モードのセカンダリ・レプリカからのキャプチャ、およびプライマリ・レプリカへの配信をサポートしています。

Always On可用性グループ内のプライマリまたはセカンダリ・レプリカからキャプチャする場合は、そのキャプチャ・プロセスではログからハードニング済トランザクションのみが読み取られる必要があること、およびOracle GoldenGateによる取得元となるレプリカ・データベースの間でデータが失われる可能性はないことを理解しておいてください。

データベース接続

ExtractとReplicatの両方に対して、接続にAlways On可用性グループ・リスナーを使用するデータベース接続を作成することをお薦めします。
  • Replicatの場合、このリスナーに接続することで、プライマリ・レプリカが新しいインスタンスへのフェイルオーバーを実行しても、新しいプライマリを指すように接続設定を手動で編集することなくReplicatは再接続できるようになります。

  • Extractの場合は、このリスナーに接続することで、新しいインスタンスを指すように接続を編集せずにプライマリに再接続できるのみでなく、読取り専用セカンダリに対してExtractのデータ抽出ストアド・プロシージャを必要に応じて実行できます。

  • Always On環境に接続されているExtractとReplicatの両方で、ManagerにAUTORESTARTパラメータを使用し、フェイルオーバー後にプロセスを再起動します。

  • Extractのデータ抽出問合せを読取り専用セカンダリにルーティングするために、接続でリスナーが使用されていること、読取り専用ルーティングを処理するように構成された読取り専用セカンダリ・レプリカが1つ以上あること、およびExtractの実行にTRANLOGOPTIONS ALWAYSONREADONLYROUTINGパラメータを指定していることを確認します。

    読取り専用ルーティングを構成する方法の詳細は、次のMicrosoftドキュメントを参照してください。https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/configure-read-only-routing-for-an-availability-group-sql-server?view=sql-server-2017

サプリメンタル・ロギング

サプリメンタル・ロギングは、プライマリ・レプリカに接続された管理クライアントまたはWebインタフェースを使用する通常の方法(ADD TRANDATA)で有効化する必要があります。セカンダリ・レプリカに対しては有効化しないでください。

  • DBLOGINを使用して接続し、ADD TRANDATAを実行するには、プライマリ・レプリカへのDSNか、Always On可用性グループ・リスナーへのDSNを作成します。

  • プライマリ・レプリカ・データベースに対してサプリメンタル・ロギングを有効にしていると、セカンダリ・レプリカではSQL Serverチェンジ・データ・キャプチャ・ジョブが自動作成されなくなります。プライマリからセカンダリへのフェイルオーバー時には、新しいプライマリ・レプリカでSQL Serverチェンジ・データ・キャプチャ・ジョブとOracle CDCクリーン・アップ・ジョブ(使用中の場合)を手動で作成する必要があります。

    EXECUTE sys.sp_cdc_add_job N'capture

    • 新しいプライマリでSQL Server CDCキャプチャ・ジョブを作成するときには、デフォルトの構成設定が適用されます。そのため、前のプライマリ・レプリカでデフォルト値を変更していた場合は、相応の値を設定するために、新しいプライマリでsys.sp_cdc_change_jobを実行する必要があります。

ノート:

詳細は、AlwaysOnセカンダリ・レプリカのCDCキャプチャ・ジョブを有効化する方法に関するMicrosoftドキュメントを参照してください。

動作要件と考慮事項

  • プライマリ・インスタンスではなくなったインスタンスにSQL Server CDCキャプチャ・ジョブがインストールされている場合、そのジョブはしばらく実行してから停止し、再起動は試行されません。そのインスタンスへのフェイルオーバー時には、ジョブが自動的に開始されないため、手動でジョブを起動する必要があります。

  • セカンダリ・レプリカ・データベースがプライマリ・レプリカ・データベースと同期していない場合、CDCキャプチャ・ジョブはログに進まないため、プライマリおよびセカンダリ・レプリカが同期されるまで、レコードはExtractによってキャプチャされません。詳細は、次のMicrosoftの記事を参照してください。

    https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/replicate-track-change-data-capture-always-on-availability?view=sql-server-2017

    ノート:

    Always On可用性グループ内のプライマリまたはセカンダリ・レプリカからキャプチャする場合は、そのキャプチャ・プロセスではログからハードニング済トランザクションのみが読み取られる必要があること、およびOracle GoldenGateによる取得元となるレプリカ・データベースの間でデータが失われる可能性はないことを理解しておいてください。
  • 中間層のWindowsサーバーまたはLinuxサーバーからExtractを実行するときには、中間層サーバーの日付、時刻およびタイムゾーンをプライマリ・レプリカと同じになるように設定します。

  • Extractが読取り可能なセカンダリ・データベースからキャプチャするように構成されているときに、読取り専用ルーティングによって構成されていない場合は、Extractの開始前にセカンダリ・レプリカに対するSQL Server CDCキャプチャ・ジョブを作成しておく必要があります。これは、Extractがジョブの有無をチェックするためです。SQL Server CDCキャプチャ・ジョブを作成するには、Extractの接続先になる可能性のある潜在的なセカンダリを適切な時点で書込み可能なプライマリ・データベースとして設定し、前述のサプリメンタル・ロギングでのステップを実行してSQL Server CDCキャプチャ・ジョブを手動で追加します。
  • Oracle GoldenGateをアンインストールし、Always On可用性グループの一部であるデータベースでチェンジ・データ・キャプチャを無効にする場合は、チェンジ・データ・キャプチャの無効化で説明されている追加のステップに従います。