执行可用性组的计划手动故障转移 (SQL Server)

本主题说明如何在 SQL Server 2012 中使用 SQL Server Management Studio、Transact-SQL 或 PowerShell 对 AlwaysOn 可用性组执行手动故障转移而不丢失数据(“计划的手动故障转移”)。 可用性组在可用性副本级别进行故障转移。 计划的手动故障转移(类似于任何 AlwaysOn 可用性组 故障转移)将辅助副本转换为主角色,同时将以前的主副本转换为辅助角色。

仅当主副本和目标辅助副本在同步提交模式下运行且当前同步时,才支持计划的手动故障转移,这种故障转移保留加入到目标辅助副本上的可用性组的辅助数据库中的所有数据。 一旦以前的主副本转换为辅助角色,其数据库将变成辅助数据库,并开始与新的 master 数据库进行同步。 在将其全部转换为 SYNCHRONIZED 状态之后,新的辅助副本将变成适于充当将来计划的手动故障转移的目标。

注意注意

如果辅助副本和主副本都配置为自动故障转移模式,则一旦辅助副本同步,该副本还可以充当自动故障转移的目标。 有关详细信息,请参阅可用性模式(AlwaysOn 可用性组)

  • 开始之前: 

    限制和局限

    先决条件和限制

    安全性

  • 若要对可用性组执行手动故障转移,请使用: 

    SQL Server Management Studio

    Transact-SQL

    PowerShell

  • 跟进: 在对可用性组执行手动故障转移后

开始之前

限制和局限

  • 故障转移命令将在目标辅助副本接受它之后立即返回。 但是,在可用性组完成故障转移之后,数据库恢复操作将以异步方式执行。

  • 故障转移时,不维护可用性组中数据库间的跨数据库一致性。

    注意注意

    AlwaysOn 可用性组 不支持跨数据库事务和分布式事务。 有关详细信息,请参阅数据库镜像或 AlwaysOn 可用性组不支持跨数据库事务 (SQL Server)

先决条件和限制

  • 目标辅助副本和主副本必须同时在同步提交可用性模式下运行。

  • 目标辅助副本当前必须与主副本同步。 这要求此辅助副本上的所有辅助数据库必须已加入到可用性组,并与其对应的 master 数据库同步(即本地辅助数据库必须为 SYNCHRONIZED)。

    提示提示

    若要确定辅助副本的故障转移就绪状态,请查询 sys.dm_hadr_database_cluster_states 动态管理视图中的 is_failover_ready 列,或查看 AlwaysOn 组面板“故障转移就绪”列。

  • 只有目标辅助副本支持该任务。 您必须连接到承载目标辅助副本的服务器实例。

安全性

权限

对可用性组要求 ALTER AVAILABILITY GROUP 权限、CONTROL AVAILABILITY GROUP 权限、ALTER ANY AVAILABILITY GROUP 权限或 CONTROL SERVER 权限。

用于“返回首页”链接的箭头图标[返回页首]

使用 SQL Server Management Studio

对可用性组执行手动故障转移

  1. 在对象资源管理器中,连接到承载着需要进行故障转移的可用性组的一个辅助副本的服务器实例,然后展开服务器树。

  2. 依次展开**“AlwaysOn 高可用性”节点和“可用性组”**节点。

  3. 右键单击要进行故障转移的可用性组,然后选择**“故障转移”**命令。

  4. 这将启动“故障转移可用性组向导”。 有关详细信息,请参阅使用故障转移可用性组向导 (SQL Server Management Studio)

用于“返回首页”链接的箭头图标[返回页首]

使用 Transact-SQL

对可用性组执行手动故障转移

  1. 连接到承载目标辅助副本的服务器实例。

  2. 按如下所示使用 ALTER AVAILABILITY GROUP 语句:

    ALTER AVAILABILITY GROUP group_name FAILOVER

    其中,group_name 是可用性组的名称。

    下面的示例将 MyAg 可用性组手动故障转移到连接的辅助副本。

    ALTER AVAILABILITY GROUP MyAg FAILOVER;
    

用于“返回首页”链接的箭头图标[返回页首]

使用 PowerShell

对可用性组执行手动故障转移

  1. 将目录 (cd) 更改为承载目标辅助副本的服务器实例。

  2. 使用 Switch-SqlAvailabilityGroup cmdlet。

    注意注意

    若要查看 cmdlet 的语法,请使用 SQL Server 2012 PowerShell 环境中的 Get-Help cmdlet。 有关详细信息,请参阅 获取 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)