通过


你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

故障转移链接 - Azure SQL 托管实例

applies to:Azure SQL 托管实例

本文介绍如何使用 SQL Server Management Studio(SSMS)或 PowerShell 进行SQL Server与Azure SQL托管实例之间的数据库链接故障转移,以便实现灾难恢复或迁移。

先决条件

若要通过链接将数据库故障转移到次要副本,需要满足以下先决条件:

停止工作负载

若要将数据库故障转移到次要副本,请先在维护时段停止主要副本上的任何应用程序工作负载。 这使数据库复制能够在辅助数据库上同步,以便你能够在不丢失数据的情况下故障转移到辅助数据库。 在进行故障转移之前,请确保应用程序不会向主节点提交事务。

检查复制延迟

在执行计划故障转移之前,次要副本必须与主副本保持同步。 如果次要副本远远落后于主副本,计划内故障转移可能会超时和失败。

对SQL Server和SQL 托管实例使用以下 T-SQL 查询监视副本之间的复制延迟:

-- Execute on SQL Server and SQL Managed Instance 
USE master
DECLARE @link_name varchar(max) = '<DAGname>'
SELECT
   ag.name [Link name], 
   ars1.role_desc [Link role],
   ars2.connected_state_desc [Link connected state],
   ars2.synchronization_health_desc [Link sync health],
   drs.secondary_lag_seconds [Link replication latency (seconds)]
FROM
   sys.availability_groups ag 
   JOIN sys.dm_hadr_availability_replica_states ars1
   ON ag.group_id = ars1.group_id
   JOIN sys.dm_hadr_availability_replica_states ars2
   ON ag.group_id = ars2.group_id
   JOIN sys.dm_hadr_database_replica_states drs
   ON ars2.replica_id = drs.replica_id
WHERE 
   ag.is_distributed = 1 AND ag.name = @link_name AND ars1.is_local = 1 AND ars2.is_local = 0
GO

如果复制滞后时间较高,请等待辅助副本赶上主副本。 如果滞后时间持续,可能需要执行其他故障排除步骤,例如改善两个实例之间的链接网络吞吐量,或增加辅助副本上的资源容量。

故障转移数据库

可以使用 Transact-SQL(T-SQL)、SQL Server Management Studio 或 PowerShell 对链接数据库进行故障切换。

您可以从SQL Server 2022 CU13(KB5036432)开始使用 Transact-SQL 进行链接故障转移。

若要对连接执行计划性故障转移,请在主要副本上使用以下 T-SQL 命令:

ALTER AVAILABILITY GROUP [<DAGname>] FAILOVER

若要执行强制故障转移,请在次要副本上使用以下 T-SQL 命令:

ALTER AVAILABILITY GROUP [<DAGname>] FORCE_FAILOVER_ALLOW_DATA_LOSS

重要

执行计划故障转移后,复制模式设置为异步。

故障转移多个数据库

如果计划从同一服务器上的实例故障转移多个数据库,为实现最佳性能和可预测性,请每次在每个实例上故障转移 8 个数据库。 例如,如果每个实例有 10 个实例,每个实例有 32 个链接数据库,则每次从每个实例故障转移 8 个数据库,并重复此过程,直到所有数据库都故障转移。

故障转移后查看数据库

对于 SQL Server 2022,如果选择维护链接,则可以在 SQL Server Management Studio 中的 Availability Groups 下检查分布式可用性组是否存在对象资源管理器

如果在故障转移期间删除了链接,则可以使用 对象资源管理器 确认分布式可用性组不再存在。 如果选择保留可用性组,则数据库仍将同步

故障转移后清理

除非选择了“成功故障转移后移除链接”,否则在 SQL Server 2022 中进行故障转移不会中断该链接。 可以在故障转移后维持连接,这会使可用性组和分布式可用性组保持活跃状态。 无需执行其他操作。

删除链接只会删除分布式可用性组,并使可用性组保持活动状态。 可以决定保留可用性组,或将其删除。

如果决定删除可用性组,请替换以下值,然后运行示例 T-SQL 代码:

  • <AGName>,SQL Server上的可用性组的名称(用于创建链接)。
-- Run on SQL Server
USE MASTER
GO
DROP AVAILABILITY GROUP <AGName> 
GO

强制故障转移后的状态不一致

强制故障转移后,可能会遇到裂脑情况,其中两个副本都处于主角色,导致链接处于不一致状态。 如果在灾难期间故障转移到次要副本,然后主要副本重新联机,则可能会发生这种情况。

若要解决此问题,请参阅修复脑裂情况

要使用该链接,请参阅以下内容:

要了解有关该链接的详细信息,请参阅以下内容:

对于其他复制和迁移方案,请考虑: