使用分布式 AG 完成迁移

使用分布式可用性组 (AG) 将数据库从 SQL Server 迁移到 Azure 虚拟机 (VM) 上的 SQL Server。

本文假设你已经为独立数据库可用性组数据库配置了分布式 AG,现在您已准备好完成迁移到 Azure VM 上的 SQL Server。

监视迁移

使用 Transact-SQL (T-SQL) 监视迁移进度。

在全局主要节点和转发器上运行以下脚本,并验证主要可用性组 (OnPremAG) 和辅助可用性组 (AzureAG) 的 synchronization_state_desc 状态是否为 SYNCHRONIZED。 确认分布式 AG (DAG) 的 synchronization_state_desc 正在同步,并且 last_hardened_lsn 对于全局主服务器和转发器上的每个数据库都是相同的。

否则,每隔 5 秒左右在双方重新运行一次查询,直到相同为止。

使用以下脚本监视迁移:

SELECT ag.name,
    drs.database_id,
    db_name(drs.database_id) AS database_name,
    drs.group_id,
    drs.replica_id,
    drs.synchronization_state_desc,
    drs.last_hardened_lsn
FROM sys.dm_hadr_database_replica_states drs
INNER JOIN sys.availability_groups ag
    ON drs.group_id = ag.group_id;

完成迁移

验证可用性组和分布式 AG 的状态后,便可以准备完成迁移了。 这包括将分布式 AG 故障转移到转发器(Azure 中的目标 SQL Server),然后将应用程序切换到 Azure 端的新节点。

要对分布式可用性组进行故障转移,请查看故障转移到辅助可用性组

故障转移后,更新应用程序的连接字符串以连接到 Azure 中的新主副本。 此时可以选择维护分布式可用性组,或者在源和目标 SQL Server 实例上使用 DROP AVAILABILITY GROUP [DAG] 删除分布式可用性组。

如果域控制器位于源端,请验证 Azure 中的目标 SQL Server VM 是否已加入域,然后再放弃源 SQL Server 实例。 在 Azure 中的源端创建域并将 SQL Server VM 添加到此新域之前,请勿删除源端的域控制器。