使用 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 代理程式工作步驟,確認目前的副本是否確實為主要副本。這項操作透過 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 搭配 Always On 可用性群組時,已知限制包括:

  • Datastream 不支援根據接聽程式 IP 位址進行私人 DNS 解析。您必須手動切換副本的 IP 位址。
  • 可用性群組容錯移轉後,您必須手動確保 SQL Server 代理程式擷取和清除工作在新主機上執行。如果交易記錄在 Datastream 讀取變更前遭到截斷,可能會導致資料遺失。
  • 如果副本的建立時間早於主要副本,則必須在串流中加入 always_on_availability: true 標籤,以免發生資料完整性問題。如要瞭解如何為串流加上標籤,請參閱「定義串流的設定」一文。

後續步驟