關於分散式可用性群組 (DAG) 遷移

除了標準的 Cloud Storage 備份與還原遷移流程外,資料庫遷移服務也支援使用 SQL Server 分散式可用性群組 (DAG),將自行管理的 SQL Server 資料庫遷移至 SQL Server 適用的 Cloud SQL。

資料庫移轉服務不會將備份和交易記錄檔匯出及上傳至 Cloud Storage bucket,而是在來源可用性群組與目的地 SQL Server 適用的 Cloud SQL 執行個體上的受管理次要可用性群組之間,設定分散式可用性群組。這項設定會直接透過私人網路連線,串流初始完整載入作業和後續的資料庫變更。

本頁面涵蓋下列主題:

DAG 遷移作業的使用時機

下表比較標準備份和還原遷移與分散式可用性群組 (DAG) 遷移,協助您選擇最適合工作負載的方法:

功能或需求 標準備份與還原遷移 (標準遷移指南) 分散式可用性群組 (DAG) 遷移 (DAG 遷移指南)
支援的來源 自行管理的 SQL Server、Amazon RDS 和 SQL Server 適用的 Cloud SQL。 自行管理的 SQL Server (Enterprise Edition),具備 Always On 可用性群組。
資料移動機制 在 Cloud Storage 中暫存完整備份 (.bak)、選用的差異備份 (.diff) 和交易記錄 (.trn) 檔案。 透過 SQL Server 資料庫鏡像 (DBM) 端點直接進行網路串流 (不需要備份檔案或 Cloud Storage bucket)。
網路連線 來源和目的地之間不需要連線。 SQL Server 資料庫通訊埠 (預設為 1433) 和資料庫鏡像通訊埠 (預設為 5022) 必須具備雙向私人 IP 連線。
遷移期間存取目的地資料庫 資料庫會維持在 RESTORING 模式 (無法存取查詢),直到升級為止。 在持續複製 (CDC) 階段,資料庫會處於唯讀模式。
升級後容錯回復 不支援 (單向升級)。 內建反向複製功能 (FAILBACK階段),可在升級後將資料從 SQL Server 適用的 Cloud SQL 複製回來源 SQL Server 執行個體,並支援零資料遺失的容錯切換。

DAG 遷移作業的運作方式

在 DAG 遷移期間,資料庫遷移服務會協調來源可用性群組,與目的地 SQL Server 適用的 Cloud SQL 執行個體上,代管次要可用性群組之間的資料複製作業。

網路通訊管道

資料庫遷移服務會在來源 SQL Server 執行個體和目的地 SQL Server 適用的 Cloud SQL 執行個體之間,使用兩個私人網路通訊管道:

  1. SQL Server 連結伺服器 (資料庫通訊埠,預設為 1433):資料庫遷移服務會使用在目的地 SQL Server 適用的 Cloud SQL 執行個體上設定的連結伺服器,在來源 SQL Server 執行個體上執行管理和自動化調度管理查詢。
  2. 資料庫鏡像 (DBM) 端點 (預設為 5022):來源可用性群組和目的地 SQL Server 適用的 Cloud SQL 可用性群組,會直接透過 DBM 通訊埠,交換經過憑證驗證的初始完整載入資料和進行中的資料庫變更。

遷移生命週期階段

DAG 遷移工作會經歷四個生命週期階段:

  1. 初始完整載入 (FULL_DUMP):啟動遷移工作時,資料庫遷移服務會設定分散式可用性群組,透過網路將來源可用性群組中所有資料庫的初始完整副本,串流至目的地 SQL Server 適用的 Cloud SQL 執行個體。
  2. 持續複製 (CDC):每個資料庫完成初始完整載入後,就會轉換至 CDC 階段。來源資料庫的後續變更會透過 DBM 端點持續複製,您可以連線至目的地 SQL Server 適用的 Cloud SQL 執行個體,對複製的資料庫執行唯讀驗證查詢。
  3. 升級和反向複製 (FAILBACK):升級遷移工作 (promote,不含 --failback 旗標) 時,資料庫遷移服務會同步處理兩個可用性群組,並翻轉其角色,讓目的地 SQL Server 適用的 Cloud SQL 執行個體成為可讀寫的主要執行個體,原始來源 SQL Server 執行個體則成為次要執行個體,並將遷移工作階段轉換為 FAILBACK (在 Google Cloud CLI 和 API 回應中為 PHASE_FAILBACK)。在FAILBACK階段,遷移工作會維持在Running狀態,並將 SQL Server 適用的 Cloud SQL 中的新寫入內容,複製回來源 SQL Server 執行個體。
  4. 容錯回復切換、停止或完成 (Stop 和 Delete):
    • 如需在 FAILBACK 階段還原轉換作業,請執行 promote 指令並加上 --failback 旗標 (在 API 中為 failback = true),執行零資料遺失容錯回復切換作業,將原始來源 SQL Server 執行個體還原為主要執行個體,將 SQL Server 適用的 Cloud SQL 降級為次要執行個體,並將遷移工作傳回 CDC 階段。
    • 您可以執行 stop,在定義的短時間內停止資料複製 (複製作業停止時,更新作業會繼續在交易記錄中累積)。在 Stopped 狀態下,您可以執行 resume 繼續複製資料,或執行 delete 完成遷移作業並執行必要的清除作業。
    • 確認永久轉換至 SQL Server 適用的 Cloud SQL 後,請刪除 (delete) 遷移工作 (直接刪除或從 Stopped 狀態刪除)。刪除遷移工作後,系統會完成遷移作業、捨棄兩個執行個體上的分散式可用性群組和憑證,並允許您啟用在遷移期間遭到封鎖的 SQL Server 適用的 Cloud SQL 功能,例如時間點復原 (PITR) 和唯讀副本。

支援的來源和目的地資料庫

DAG 遷移支援下列來源和目的地資料庫版本:

  • 來源資料庫:自行管理的 SQL Server Enterprise Edition (2017、2019、2022 和 2025 版),並啟用 Always On 可用性群組功能 (在 Windows 或 Linux)。
  • 目的地資料庫:SQL Server 適用的 Cloud SQL Enterprise Edition (2017、2019、2022 和 2025 版)。

DAG 遷移作業的已知限制

設定 DAG 遷移作業前,請先考量下列限制:

  • 如要建立 DAG 連線設定檔,以及建立、驗證、啟動、升級或刪除 DAG 遷移工作,只能透過 Google Cloud CLI 或資料庫遷移服務 API 進行。您可以在 Google Cloud 控制台監控 DAG 遷移工作進度、各資料庫狀態和指標。
  • 來源 SQL Server 執行個體和目的地 SQL Server 適用的 Cloud SQL 執行個體,都必須執行 Enterprise 版本。DAG 遷移不支援 Amazon RDS 和 SQL Server 適用的 Cloud SQL 來源。
  • 每項 DAG 遷移工作都會遷移單一來源可用性群組中包含的所有資料庫 (每個分散式可用性群組最多 100 個資料庫)。系統資料庫 (master、model、msdb、tempdb) 和資料庫遷移服務輔助資料庫 (gcp_dms_db) 不會遷移。
  • 來源可用性群組中的所有資料庫,都必須將資料檔案 (.mdf 和 .ndf) 儲存在預設的 SQL Server 資料目錄中。
  • 資料庫擁有權規定:
    • 來源資料庫不得由 sa 登入帳戶擁有。啟動遷移工作前,請將資料庫擁有者從 sa 變更為其他 SQL 登入帳戶或 Windows 使用者。
    • 如果來源資料庫的擁有者是 Windows Active Directory 使用者,您必須在遷移前將來源資料庫擁有者變更為 SQL 登入,或將目的地 SQL Server 適用的 Cloud SQL 執行個體與 Active Directory 整合,這樣資料庫遷移服務才能在遷移工作啟動時,自動在目的地執行個體上建立對應的 Windows 登入。
    • 如果是 SQL 驗證的資料庫擁有者,資料庫遷移服務會自動在目的地 SQL Server 適用的 Cloud SQL 執行個體上建立對應的登入資訊,並加上 gcp_dms_ 前置字元、6 個字元的 ID 和來源擁有者名稱 (例如 gcp_dms_a1b2c3_myowner),以擁有遷移的資料庫。
  • 不支援公開 IP 連線。您必須使用私人服務存取權或 Private Service Connect,設定來源 SQL Server 執行個體與目的地 SQL Server 適用的 Cloud SQL 執行個體之間的私人 IP 連線。
  • DAG 遷移工作存在時,目的地 SQL Server 適用的 Cloud SQL 限制:從啟動 DAG 遷移工作到刪除遷移工作 (包括工作處於升級後FAILBACK階段):
    • 目的地 SQL Server 適用的 Cloud SQL 執行個體必須停用時間點復原 (PITR)。
    • 目的地 SQL Server 適用的 Cloud SQL 執行個體不支援唯讀副本和讀取集區。
    • 目的地 SQL Server 適用的 Cloud SQL 執行個體不支援近乎零停機時間的預定維護作業。
    • 請勿手動修改目的地 SQL Server 適用的 Cloud SQL 執行個體上的 cloud sql enable dag support 資料庫旗標;資料庫遷移服務會在遷移工作啟動時自動啟用這個旗標,您可以在刪除遷移工作後移除這個旗標。
  • 在遷移期間新增或移除資料庫:
    • 當遷移工作處於 CDC 階段時,您可以動態新增或移除來源可用性群組中的資料庫。資料庫遷移服務會自動偵測新加入的資料庫、驗證資料庫,並將資料庫初始完整載入至目的地 SQL Server 適用的 Cloud SQL 執行個體。
    • 如果從來源可用性群組中移除資料庫,系統會停止複製該資料庫,並從遷移工作的追蹤物件中移除,然後將資料庫保留在目的地 SQL Server 適用的 Cloud SQL 執行個體的 RESTORING 狀態 (工作升級時不會復原)。
    • 在升級後FAILBACK階段,不支援直接在目的地 SQL Server 適用的 Cloud SQL 執行個體新增資料庫 (目的地可用性群組不會更新為在 Cloud SQL 建立的新資料庫)。
  • 停止、繼續及重新啟動 DAG 遷移工作的注意事項:
    • 停止 (stop) DAG 遷移工作會暫停資料複製作業,導致更新在複製作業暫停期間累積在交易記錄中。請只在定義的短時間內停止 DAG 遷移工作,以免交易記錄磁碟填滿。在 Stopped 狀態下,您可以執行 resume 來繼續複製資料,也可以執行 delete 來完成遷移作業並執行必要的清理作業。
    • 重新啟動 (restart) 失敗或停止的 DAG 遷移工作,會刪除目的地 SQL Server 適用的 Cloud SQL 執行個體上已遷移的資料庫,並透過網路重新執行初始完整載入 (FULL_DUMP)。

後續步驟