关于分布式可用性组 (DAG) 迁移

除了标准的 Cloud Storage 备份和恢复迁移流程之外,Database Migration Service 还支持使用 SQL Server 分布式可用性组 (DAG) 将自行管理的 SQL Server 数据库迁移到 Cloud SQL for SQL Server。

Database Migration Service 不会将备份和事务日志文件导出并上传到 Cloud Storage 存储桶,而是在源可用性组与目标 Cloud SQL for SQL Server 实例上的代管式辅助可用性组之间配置分布式可用性组。此配置会通过专用网络连接直接流式传输初始完整加载和持续的数据库更改。

本页面涵盖以下主题:

何时使用 DAG 迁移

下表比较了标准备份和恢复迁移与分布式可用性组 (DAG) 迁移,可帮助您选择最适合您的工作负载的方法:

功能或要求 标准备份和恢复迁移(标准迁移指南) 分布式可用性组 (DAG) 迁移(DAG 迁移指南)
支持的来源 自行管理的 SQL Server、Amazon RDS 和 Cloud SQL for SQL Server。 具有 Always On 可用性组的自行管理的 SQL Server(企业版)。
数据移动机制 在 Cloud Storage 中暂存的完整备份 (.bak)、可选差分备份 (.diff) 和事务日志 (.trn) 文件。 通过 SQL Server 数据库镜像 (DBM) 端点进行直接网络流式传输(无需备份文件或 Cloud Storage 存储桶)。
网络连接 来源和目标之间无需连接。 SQL Server 数据库端口(默认 1433)和数据库镜像端口(默认 5022)上需要双向专用 IP 连接。
迁移期间的目标数据库访问权限 在升级之前,数据库会一直处于 RESTORING 模式(无法访问查询)。 在持续复制 (CDC) 阶段,数据库可在只读模式下访问。
升级后故障恢复 不支持(单向升级)。 在提升后,从 Cloud SQL for SQL Server 反向复制(FAILBACK 阶段)回源 SQL Server 实例,支持零数据丢失故障切换。

DAG 迁移的工作原理

在 DAG 迁移期间,Database Migration Service 会在源可用性组与目标 Cloud SQL for SQL Server 实例上的代管式辅助可用性组之间编排数据复制。

网络通信渠道

Database Migration Service 在源 SQL Server 实例和目标 Cloud SQL for SQL Server 实例之间使用两个专用网络通信通道:

  1. SQL Server 关联的服务器(数据库端口,默认值为 1433):Database Migration Service 使用在目标 Cloud SQL for SQL Server 实例上配置的关联服务器,在源 SQL Server 实例上执行管理和编排查询。
  2. 数据库镜像 (DBM) 端点(默认 5022):源可用性组和目标 Cloud SQL for SQL Server 可用性组直接通过 DBM 端口交换经过证书身份验证的初始完整加载数据和持续数据库更改。

迁移生命周期阶段

DAG 迁移作业会经历四个生命周期阶段:

  1. 初始完整加载 (FULL_DUMP):启动迁移作业后,Database Migration Service 会配置分布式可用性组,以通过网络将源可用性组中所有数据库的初始完整副本流式传输到目标 Cloud SQL for SQL Server 实例。
  2. 持续复制 (CDC):每个数据库完成初始完整加载后,都会过渡到 CDC 阶段。对源数据库所做的持续更改会通过 DBM 端点持续复制,您可以连接到目标 Cloud SQL for SQL Server 实例,对复制数据库运行只读验证查询。
  3. 提升和反向复制 (FAILBACK):当您提升迁移作业(promote,不带 --failback 标志)时,Database Migration Service 会同步两个可用性组,翻转其角色,使目标 Cloud SQL for SQL Server 实例成为读写主要实例,而原始源 SQL Server 实例成为次要实例,并将迁移作业阶段转换为 FAILBACK(Google Cloud CLI 和 API 响应中的 PHASE_FAILBACK)。在 FAILBACK 阶段,迁移作业会保持 Running 状态,并将 Cloud SQL for SQL Server 中的新写入操作复制回源 SQL Server 实例。
  4. 故障恢复切换、停止或完成(Stop 和 Delete):
    • 如果您需要在 FAILBACK 阶段还原割接,可以运行带有 --failback 标志(API 中的 failback = true)的 promote 命令,以执行零数据丢失故障切换,将原始源 SQL Server 实例恢复为主实例,将 Cloud SQL for SQL Server 降级为辅助实例,并将迁移作业返回到 CDC 阶段。
    • 您可以运行 stop,在指定的短时间内停止数据复制(在复制停止期间,更新会继续在事务日志中累积)。在 Stopped 状态下,您可以运行 resume 以恢复数据复制,也可以运行 delete 以完成迁移并执行必要的清理。
    • 确认割接到 Cloud SQL for SQL Server 是永久性的后,您就可以删除 (delete) 迁移作业(直接删除或从 Stopped 状态删除)。删除迁移作业会完成迁移,删除两个实例上的分布式可用性组和证书,并允许您启用在迁移期间被屏蔽的 Cloud SQL for SQL Server 功能,例如时间点恢复 (PITR) 和读取副本。

支持的源数据库和目标数据库

DAG 迁移支持以下来源和目标数据库版本:

  • 源数据库:启用了 Always On 可用性组功能的自管理 SQL Server 企业版(2017、2019、2022 和 2025 版)(在 Windows 或 Linux 上)。
  • 目标数据库:Cloud SQL for SQL Server 企业版(2017、2019、2022 和 2025 版)。

DAG 迁移的已知限制

在配置 DAG 迁移之前,请考虑以下限制:

  • 仅支持通过 Google Cloud CLI 或 Database Migration Service API 创建 DAG 连接配置文件以及创建、验证、启动、提升或删除 DAG 迁移作业。您可以在 Google Cloud 控制台中监控 DAG 迁移作业进度、每个数据库的状态和指标。
  • 源 SQL Server 实例和目标 Cloud SQL for SQL Server 实例都必须运行企业版。DAG 迁移不支持 Amazon RDS 和 Cloud SQL for SQL Server 源。
  • 每个 DAG 迁移作业都会迁移单个源可用性组中包含的所有数据库(每个分布式可用性组最多 100 个数据库)。系统数据库(master、model、msdb、tempdb)和 Database Migration Service 辅助数据库 (gcp_dms_db) 不会迁移。
  • 源可用性组中的所有数据库都必须将其数据文件(.mdf 和 .ndf)存储在默认 SQL Server 数据目录中。
  • 数据库所有权要求:
    • 源数据库不能归 sa 登录名所有。在开始迁移作业之前,请将数据库所有者从 sa 更改为其他 SQL 登录名或 Windows 用户。
    • 如果源数据库归 Windows Active Directory 用户所有,您必须在迁移前将源数据库所有者更改为 SQL 登录名,或者将目标 Cloud SQL for SQL Server 实例与 Active Directory 集成,以便 Database Migration Service 可以在迁移作业启动时自动在目标实例上创建相应的 Windows 登录名。
    • 对于 SQL 身份验证的数据库所有者,Database Migration Service 会自动在目标 Cloud SQL for SQL Server 实例上创建一个对应的登录名,该登录名以 gcp_dms_、6 字符标识符和源所有者名称(例如 gcp_dms_a1b2c3_myowner)为前缀,用于拥有迁移的数据库。
  • 不支持公共 IP 连接。您必须使用专用服务访问通道或 Private Service Connect,在源 SQL Server 实例与目标 Cloud SQL for SQL Server 实例之间配置专用 IP 连接。
  • DAG 迁移作业存在期间的目标 Cloud SQL for SQL Server 限制:从您启动 DAG 迁移作业到您删除迁移作业(包括作业处于升级后 FAILBACK 阶段时):
    • 必须在 Cloud SQL for SQL Server 目标实例上停用时间点恢复 (PITR)。
    • 目标 Cloud SQL for SQL Server 实例不支持读取副本和读取池。
    • 目标 Cloud SQL for SQL Server 实例不支持近乎零停机时间的计划内维护。
    • 请勿手动修改目标 Cloud SQL for SQL Server 实例上的 cloud sql enable dag support 数据库标志;Database Migration Service 会在迁移作业启动时自动启用此标志,您可以在删除迁移作业后将其移除。
  • 在迁移期间添加或移除数据库:
    • 当迁移作业处于 CDC 阶段时,您可以在源可用性组中动态添加或移除数据库。Database Migration Service 会自动检测新添加的数据库,对其进行验证,并将其初始完整加载到目标 Cloud SQL for SQL Server 实例。
    • 从源可用性组中移除数据库会停止该数据库的复制,将其从迁移作业的跟踪对象中移除,并使该数据库在目标 Cloud SQL for SQL Server 实例上保持 RESTORING 状态(在作业升级时不会恢复)。
    • 不支持在提升后 FAILBACK 阶段直接在目标 Cloud SQL for SQL Server 实例上添加新数据库(目标可用性组不会使用在 Cloud SQL 上创建的新数据库进行更新)。
  • 停止、恢复和重启 DAG 迁移作业的注意事项:
    • 停止 (stop) DAG 迁移作业会停止数据复制,导致在复制停止期间更新在事务日志中累积。仅在定义的短时间内停止 DAG 迁移作业,以免事务日志磁盘填满。在 Stopped 状态下,您可以运行 resume 以恢复数据复制,也可以运行 delete 以完成迁移并执行必要的清理。
    • 重启 (restart) 失败或停止的 DAG 迁移作业会删除目标 Cloud SQL for SQL Server 实例上已迁移的数据库,并通过网络重新运行初始完整加载 (FULL_DUMP)。

后续步骤