使用分布式可用性组 (AG) 将数据库从 SQL Server 迁移到 Azure 虚拟机 (VM) 上的 SQL Server。
本文假设你已为 独立数据库 或 可用性组数据库配置了分布式 AG,现在即可完成迁移到 Azure VM 上的 SQL Server。
监视迁移
使用 Transact-SQL (T-SQL) 监视迁移进度。
在全局主服务器和转发器上运行以下脚本,并验证主要可用性组(OnPremAG)和辅助可用性组 (AzureAG)的synchronization_state_desc状态是否为SYNCHRONIZED。 确认 synchronization_state_desc 分布式 AG (DAG) 正在同步,并且 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 AS drs
INNER JOIN sys.availability_groups AS ag
ON drs.group_id = ag.group_id;
完成迁移
验证可用性组和分布式 AG 的状态后,即可完成迁移。 这包括将分布式 AG 故障转移到转发器(Azure 中的目标 SQL Server),然后将应用程序切换到 Azure 端的新节点。
若要使您的分布式可用性组故障转移,请查看 故障转移到辅助可用性组。
故障转移后,更新应用程序的连接字符串以连接到 Azure 中的新主副本。 此时可以选择维护分布式可用性组,或者在源和目标 SQL Server 实例上使用 DROP AVAILABILITY GROUP [DAG] 删除分布式可用性组。
如果域控制器位于源端,请在放弃源 SQL Server 实例之前验证 Azure 中的目标 SQL Server VM 是否已加入域。 在 Azure 中的源端创建域并将 SQL Server VM 添加到此新域之前,请勿删除源端的域控制器。