更改管理 Always On 可用性组中副本元数据的群集

适用于:SQL Server - 仅限 Windows

本主题介绍如何通过在 SQL Server 和更高版本中使用 Transact-SQL,切换 SQL Server 2012 SP1 (11.0.3x) 实例的 HADR 群集上下文。 HADR 群集上下文 用于确定哪一 Windows Server 故障转移群集 (WSFC) 群集管理服务器实例所承载的可用性副本的元数据。

仅在 Always On 可用性组 跨群集迁移到新 WSFC 群集上的 SQL Server 2012 SP1 (11.0.3x) 实例的过程中切换 HADR 群集上下文。 Always On 可用性组 的跨群集迁移支持用最短的可用性组停机时间将操作系统升级到 Windows 8 或 Windows Server 2012 。 有关详细信息,请参阅 针对操作系统升级的 AlwaysOn 可用性组的跨群集迁移

注意

仅在跨群集迁移 Always On 可用性组 部署的过程中切换 HADR 群集上下文。

限制和局限

  • 您只能将 HADR 群集上下文从本地 WSFC 群集切换到远程群集,然后再从远程群集切换回本地群集。 不能将 HADR 群集上下文从一个远程群集切换到另一个远程群集。

  • 只有在 SQL Server 实例不承载任何可用性副本时,才能将 HADR 群集上下文切换到远程群集。

  • 远程 HADR 群集上下文随时可以切换回本地群集。 但是,只要服务器实例承载任何可用性副本,该上下文将无法再进行切换。

先决条件

  • 您对其更改 HADR 群集上下文的服务器实例必须正在运行 SQL Server 2012 SP1 (11.0.3x) 或更高版本(Enterprise Edition 或更高)。

  • 必须为 AlwaysOn 启用该服务器实例。 有关详细信息,请参阅启用和禁用 AlwaysOn 可用性组 (SQL Server)

  • 为了符合从本地群集上下文切换到远程群集上下文的条件,服务器实例不能承载任何可用性副本。 sys.availability_replicas 目录视图不应返回任何行。

    如果在服务器实例上存在任何可用性副本,则您必须首先执行以下操作之一,然后才能更改 HADR 群集上下文:

    副本角色 操作 链接
    主要 使可用性组脱机。 使可用性组脱机 (SQL Server)
    次要 从其可用性组中删除副本 从可用性组中删除辅助副本 (SQL Server)
  • 在您可以从远程群集切换到本地群集之前,所有同步提交副本必须都处于 SYNCHRONIZED 状态。

建议

  • 我们建议您指定完整的域名。 这是因为为了找到短名称的目标 IP 地址,ALTER SERVER CONFIGURATION 使用 DNS 名称解析。 在某些情况下,根据 DNS 搜索顺序,使用短名称可能会导致混淆。 例如,考虑以下命令,该命令在 abc 域 (node1.abc.com) 中的节点上执行。 意向的目标群集是 CLUS01 域 ( xyz ) 中的clus01.xyz.com群集。 但是,本地域主机还承载名为 CLUS01 (clus01.abc.com) 的一个群集。

    如果已指定目标群集 CLUS01的短名称,则 DNS 名称解析可能会返回错误群集 clus01.abc.com的 IP 地址。 为了避免此类混淆,请指定目标群集的完整名称,如下例中所示:

    ALTER SERVER CONFIGURATION SET HADR CLUSTER CONTEXT = 'clus01.xyz.com'  
    

权限

  • SQL Server 登录名

    需要 CONTROL SERVER 权限。

  • SQL Server 服务帐户

    服务器实例的 SQL Server 服务帐户必须具有:

    • 打开目标 WSFC 群集的权限。

    • 远程 WSFC 读写访问权限。

“使用 Transact-SQL”

更改可用性副本的 WSFC 群集上下文

  1. 连接到承载可用性组的主副本或辅助副本的服务器实例。

  2. 使用 ALTER SERVER CONFIGURATION 语句的 SET HADR CLUSTER CONTEXT 子句,如下所示:

    ALTER SERVER CONFIGURATION SET HADR CLUSTER CONTEXT = { 'windows_cluster' | LOCAL }

    其中:

    windows_cluster
    WSFC 群集的群集对象名称 (CON)。 您可以指定短名称或者完整的域名称。 我们建议您指定完整的域名。 有关详细信息,请参阅本主题前面的 建议

    LOCAL
    本地 WSFC 群集。

示例

下面的示例将 HADR 群集上下文更改为其他群集。 若要标识目标 WSFC 群集 ( clus01),本示例指定完整的群集对象名称 ( clus01.xyz.com)。

ALTER SERVER CONFIGURATION SET HADR CLUSTER CONTEXT = 'clus01.xyz.com';  

下面的示例将 HADR 群集上下文更改为本地 WSFC 群集。

ALTER SERVER CONFIGURATION SET HADR CLUSTER CONTEXT = LOCAL;  

跟进:在切换可用性副本的群集上下文后

新的 HADR 群集上下文将立即生效,而不重新启动服务器实例。 HADR 群集上下文设置是持久的实例级别设置,在服务器实例重新启动时也保持不变。

通过查询 sys.dm_hadr_cluster 动态管理视图确认新的 HADR 群集上下文,如下所示:

SELECT cluster_name FROM sys.dm_hadr_cluster  

此查询应返回为其设置 HADR 群集上下文的群集的名称。

在 HADR 群集上下文切换为新的群集时:

  • 对于 SQL Server的实例当前承载的任何可用性副本,将清除元数据。

  • 以前属于可用性副本的所有数据库现在都处于 RESTORING 状态。

Related Tasks

相关内容

另请参阅

AlwaysOn 可用性组 (SQL Server)
Windows Server 故障转移群集 (WSFC) 与 SQL Server
ALTER SERVER CONFIGURATION (Transact-SQL)