本主题介绍如何使用 SQL Server Management Studio、Transact-SQL 或 SQL Server 2014 中的 PowerShell 在 AlwaysOn 可用性组上执行手动故障转移而不丢失数据( 计划的手动故障转移)。 可用性组在可用性副本级别进行故障转移。 计划的手动故障转移(如任何 AlwaysOn 可用性组故障转移)会将辅助副本转换为主要角色,同时将以前的主副本转换为辅助角色。
仅当主副本和目标辅助副本以同步提交模式运行且当前同步时,才支持计划的手动故障转移,从而保留已加入目标辅助副本上可用性组的辅助数据库中的所有数据。 一旦以前的主副本转换为辅助角色,其数据库将成为辅助数据库,并开始与新的主数据库同步。 在将其全部转换为 SYNCHRONIZED 状态之后,新的辅助副本将变成适于充当将来计划的手动故障转移的目标。
注释
如果辅助副本和主要副本都配置为自动故障转移模式,则辅助副本同步后,它还可以充当自动故障转移的目标。 有关详细信息,请参阅可用性模式(AlwaysOn 可用性组)。
在您开始之前
局限性与限制
故障转移命令将在目标辅助副本接受它之后立即返回。 但是,在可用性组完成故障转移之后,数据库恢复操作将以异步方式执行。
故障转移时,不维护可用性组中数据库间的跨数据库一致性。
注释
AlwaysOn 可用性组不支持跨数据库事务和分布式事务。 有关详细信息,请参阅 数据库镜像或 AlwaysOn 可用性组不支持跨数据库事务(SQL Server)。
先决条件和限制
目标次要副本和主副本都必须在同步提交可用性模式下运行。
目标次要副本当前必须与主副本同步。 这要求此辅助副本上的所有辅助数据库必须已联接到可用性组,并与其相应的主数据库(即,本地辅助数据库必须同步)。
小窍门
若要确定辅助副本的故障转移就绪情况,请在sys.dm_hadr_database_cluster_states动态管理视图中查询is_failover_ready列,或查看Always On 群组仪表板的故障转移准备情况列。
只有目标辅助副本支持该任务。 您必须连接到承载目标辅助副本的服务器实例。
安全
权限
对可用性组要求 ALTER AVAILABILITY GROUP 权限、CONTROL AVAILABILITY GROUP 权限、ALTER ANY AVAILABILITY GROUP 权限或 CONTROL SERVER 权限。
使用 SQL Server Management Studio
对可用性组执行手动故障转移
在对象资源管理器中,连接到托管需要故障转移的可用性组的辅助副本所在的服务器实例,然后展开服务器树。
依次展开 “AlwaysOn 高可用性” 节点和 “可用性组” 节点。
右键单击要进行故障转移的可用性组,然后选择“故障转移” 命令。
这将启动“故障转移可用性组向导”。 有关详细信息,请参阅使用故障转移可用性组向导 (SQL Server Management Studio)。
使用 Transact-SQL
对可用性组执行手动故障转移
连接到承载目标辅助副本的服务器实例。
按如下所示使用 ALTER AVAILABILITY GROUP 语句:
ALTER AVAILABILITY GROUP group_name FAILOVER
其中, group_name 是可用性组的名称。
以下示例手动将 MyAg 可用性组故障转移到连接的辅助副本。
ALTER AVAILABILITY GROUP MyAg FAILOVER;
使用 PowerShell
对可用性组执行手动故障转移
将目录 (
cd) 更改为承载目标辅助副本的服务器实例。使用
Switch-SqlAvailabilityGroup命令。注释
若要查看 cmdlet 的语法,请使用
Get-HelpSQL Server 2014 PowerShell 环境中的 cmdlet。 有关详细信息,请参阅 Get Help SQL Server PowerShell。以下示例使用指定的路径手动将 MyAg 可用性组故障转移到次要副本。
Switch-SqlAvailabilityGroup -Path SQLSERVER:\Sql\SecondaryServer\InstanceName\AvailabilityGroups\MyAg
设置和使用 SQL Server PowerShell 提供程序
后续操作:在可用性组手动故障转移后
如果在可用性组的自动故障转移集之外进行了故障转移,请调整 WSFC 节点的仲裁投票,以反映新的可用性组配置。 有关详细信息,请参阅 Windows Server 故障转移群集 (WSFC) 与 SQL Server。
另请参阅
AlwaysOn 可用性组概述 (SQL Server)
故障转移和故障转移模式(AlwaysOn 可用性组)
对可用性组执行强制的手动故障转移 (SQL Server)