除了標準的 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 執行個體之間,使用兩個私人網路通訊管道:
- SQL Server 連結伺服器 (資料庫通訊埠,預設為
1433):資料庫遷移服務會使用在目的地 SQL Server 適用的 Cloud SQL 執行個體上設定的連結伺服器,在來源 SQL Server 執行個體上執行管理和自動化調度管理查詢。 - 資料庫鏡像 (
DBM) 端點 (預設為5022):來源可用性群組和目的地 SQL Server 適用的 Cloud SQL 可用性群組,會直接透過DBM通訊埠,交換經過憑證驗證的初始完整載入資料和進行中的資料庫變更。
遷移生命週期階段
DAG 遷移工作會經歷四個生命週期階段:
- 初始完整載入 (
FULL_DUMP):啟動遷移工作時,資料庫遷移服務會設定分散式可用性群組,透過網路將來源可用性群組中所有資料庫的初始完整副本,串流至目的地 SQL Server 適用的 Cloud SQL 執行個體。 - 持續複製 (
CDC):每個資料庫完成初始完整載入後,就會轉換至CDC階段。來源資料庫的後續變更會透過DBM端點持續複製,您可以連線至目的地 SQL Server 適用的 Cloud SQL 執行個體,對複製的資料庫執行唯讀驗證查詢。 - 升級和反向複製 (
FAILBACK):升級遷移工作 (promote,不含--failback旗標) 時,資料庫遷移服務會同步處理兩個可用性群組,並翻轉其角色,讓目的地 SQL Server 適用的 Cloud SQL 執行個體成為可讀寫的主要執行個體,原始來源 SQL Server 執行個體則成為次要執行個體,並將遷移工作階段轉換為FAILBACK(在 Google Cloud CLI 和 API 回應中為PHASE_FAILBACK)。在FAILBACK階段,遷移工作會維持在Running狀態,並將 SQL Server 適用的 Cloud SQL 中的新寫入內容,複製回來源 SQL Server 執行個體。 - 容錯回復切換、停止或完成 (
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)。
- 停止 (