このページでは、SQL Server の Always On 可用性グループの概要と、フェイルオーバーとデータ復旧のシナリオで Datastream がどのようにサポートしているかについて説明します。
Always On 可用性グループの概要
SQL Server の Always On 可用性グループは、障害復旧シナリオ用にデータベースを準備できる高可用性ソリューションです。
Always On 可用性グループは、ビジネスのデータベースの可用性を最大化します。可用性グループは、可用性データベースと呼ばれる選択されたデータベースのセットの複製環境をサポートします。各グループには、読み取り / 書き込みタスク用のプライマリ データベースのセットが 1 つと、対応するセカンダリ データベースのセットが最大 8 つ含まれています。セカンダリ データベースでは、必要に応じて読み取り専用アクセスまたはバックアップ オペレーションを許可できます。
Always On 可用性グループの詳細については、SQL Server ドキュメントの Always On 可用性グループとはをご覧ください。
SQL Server インスタンスの Always On 可用性グループの前提条件については、SQL Server のドキュメントをご覧ください。
Always On 可用性グループで使用するようにデータストリームを構成する
Datastream は、テーブル変更の CDC メソッドで synchronous-commit 可用性モードをサポートしています。このモードでは、データ同期が停止するまで、セカンダリ データベースは対応するプライマリと同期されたままになります。トランザクションの確認は、セカンダリ レプリカが受信したトランザクション ログレコードをディスクに書き込んだ場合にのみクライアントに送信されます。
可用性モードについては、Always On 可用性グループの可用性モードの違いをご覧ください。
Always On 可用性グループで使用するように SQL Server インスタンスを構成するには、フェイルオーバーが発生したときにログをキャプチャするように SQL Server エージェントを有効にしてから、クリーンアップ ジョブを実行する必要があります。これを行うには、現在のレプリカが実際にプライマリであるかどうかを確認するように CDC エージェント ジョブのステップを変更する必要があります。これは、sys.fn_hadr_is_primary_replica 関数を使用して行われます。
次のコマンドを使用してインスタンスを設定します。
-- Check if the current replica is a primary for the corresponding database.
USE [DATABASE_NAME];
DECLARE @DatabaseName SYSNAME = DB_NAME();
IF (SELECT sys.fn_hadr_is_primary_replica(@DatabaseName)) = 1
BEGIN
-- If the replica isn't a primary, the code block that follows is skipped
EXECUTE sys.sp_cdc_add_job @job_type = 'capture';
EXECUTE sys.sp_cdc_add_job @job_type = 'cleanup';
END
次のステップ
- Datastream と SQL Server ソースの連携の仕組みの詳細を確認します。