使用 Always On 可用性群組


本頁面說明 SQL Server 中的 Always On 可用性群組,以及 Datastream 如何支援這些群組,以因應容錯移轉和資料復原情境。

Always On 可用性群組總覽

在 SQL Server 中,Always On 可用性群組是高可用性解決方案,可讓您為災難復原情境準備資料庫。

Always On 可用性群組可為企業提供最高等級的資料庫可用性。可用性群組支援所選資料庫集 (稱為可用性資料庫) 的複製環境。每個群組都包含一組主要資料庫,用於讀取和寫入工作,以及最多八組對應的次要資料庫。次要資料庫可選擇性允許唯讀存取或備份作業。

如要進一步瞭解 Always On 可用性群組,請參閱 SQL Server 文件中的「什麼是 Always On 可用性群組?」一文。

如要瞭解 SQL Server 執行個體的 Always On 可用性群組必要條件,請參閱 SQL Server 說明文件

設定 Datastream,以便與 Always On 可用性群組搭配使用

Datastream 支援同步提交可用性模式,搭配變更資料表 CDC 方法。在這個模式下,次要資料庫會與對應的主要資料庫保持同步,直到資料同步停止為止。只有在次要副本將傳入的交易記錄寫入磁碟時,系統才會將交易確認傳送給用戶端。

如要瞭解可用性模式,請參閱「 Always On 可用性群組的可用性模式差異」。

如要設定 SQL Server 執行個體以搭配使用 Always On 可用性群組,您需要啟用 SQL Server Agent,以便在發生容錯移轉時擷取記錄,然後執行清除作業。如要執行這項操作,您必須先修改 CDC Agent 工作步驟,檢查目前的副本是否為主要副本。這項操作是透過 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

後續步驟