准备将SQL Server Always On可用性组与 Configuration Manager

适用于: Configuration Manager(current branch)

使用本文准备Configuration Manager,以便对站点数据库使用SQL Server Always On可用性组。 此功能提供高可用性和灾难恢复解决方案。

Configuration Manager支持使用可用性组:

  • 在主站点和管理中心站点。
  • 本地或Microsoft Azure 中。

Microsoft Azure 中使用可用性组时,可以使用 Azure 可用性集进一步提高站点数据库的可用性。 有关 Azure 可用性集的详细信息,请参阅 管理虚拟机的可用性

重要

在继续之前,请熟悉配置SQL Server和可用性组。 本文引用了SQL Server文档库,其中包含详细信息和过程。

支持的方案

支持将可用性组与Configuration Manager结合使用以下方案。 有关每个方案的详细信息和过程,请参阅配置Configuration Manager的可用性组

先决条件

以下先决条件适用于所有方案。 如果其他先决条件适用于特定方案,则会在该方案中详细说明这些先决条件。

Configuration Manager帐户和权限

安装帐户

用于运行Configuration Manager安装程序的帐户必须是:

  • 作为可用性组成员的每台计算机上的本地 管理员 组的成员。
  • 托管站点数据库的每个 SQL Server 实例上的 sysadmin

站点服务器到副本成员访问权限

站点服务器的计算机帐户必须是可用性组成员的每台计算机上的本地 管理员 组的成员。

SQL Server

版本

可用性组中的每个副本都必须运行 Configuration Manager 版本支持的 SQL Server 版本。 当SQL Server支持时,可用性组的不同节点可以运行不同版本的SQL Server。 有关详细信息,请参阅Configuration Manager支持的SQL Server版本

Edition

使用企业版SQL Server。

帐户

SQL Server的每个实例都可以在域用户帐户 (服务帐户) 或非域帐户下运行。 组中的每个副本可以有不同的配置。

Database

在新副本上配置数据库

仅在主副本上进行这些配置。 若要配置辅助副本,请先将主副本故障转移到辅助副本。 此操作使辅助副本成为新的主副本。

使用以下设置配置每个副本的数据库:

  • 启用 CLR 集成

    sp_configure 'show advanced options', 1;  
    GO  
    RECONFIGURE;  
    GO  
    sp_configure 'clr enabled', 1;  
    GO  
    RECONFIGURE;  
    GO
    

    有关详细信息,请参阅 CLR 集成

  • “最大文本重排大小 ”设置为 2147483647

    EXECUTE sp_configure 'max text repl size (B)', 2147483647
    
  • 将数据库所有者设置为 SA 帐户。 无需启用此帐户。

  • 打开“可信”设置:

    ALTER DATABASE [CM_xxx] SET TRUSTWORTHY ON;
    

    有关详细信息,请参阅 TRUSTWORTHY 数据库属性

  • 启用 Service Broker

    ALTER DATABASE [CM_xxx] SET ENABLE_BROKER
    

    注意

    无法对已是可用性组一部分的数据库启用 Service Broker 选项。 必须先启用该选项,然后再将其添加到可用性组。

  • 配置 Service Broker 优先级:

    ALTER DATABASE [CM_xxx] SET HONOR_BROKER_PRIORITY ON;
    ALTER DATABASE [CM_xxx] SET ENABLE_BROKER WITH ROLLBACK IMMEDIATE
    

数据库验证脚本

运行以下 SQL 脚本,验证主副本和辅助副本的数据库配置。 在修复次要副本上的问题之前,请将该次要副本更改为主要副本。

    SET NOCOUNT ON

    DECLARE @dbname NVARCHAR(128)

    SELECT @dbname = sd.name FROM sys.sysdatabases sd WHERE sd.dbid = DB_ID()

    IF (@dbname = N'master' OR @dbname = N'model' OR @dbname = N'msdb' OR @dbname = N'tempdb' OR @dbname = N'distribution' ) BEGIN
    RAISERROR(N'ERROR: Script is targeting a system database.  It should be targeting the DB you created instead.', 0, 1)
    GOTO Branch_Exit;
    END ELSE
    PRINT N'INFO: Targeted database is ' + @dbname + N'.'

    PRINT N'INFO: Running verifications....'

    IF NOT EXISTS (SELECT * FROM sys.configurations c WHERE c.name = 'clr enabled' AND c.value_in_use = 1)
    PRINT N'ERROR: CLR is not enabled!'
    ELSE
    PRINT N'PASS: CLR is enabled.'

    DECLARE @repltable TABLE (
    name nvarchar(max),
    minimum int,
    maximum int,
    config_value int,
    run_value int )

    INSERT INTO @repltable
    EXEC sp_configure 'max text repl size (B)'

    IF NOT EXISTS(SELECT * from @repltable where config_value = 2147483647 and run_value = 2147483647 )
    PRINT N'ERROR: Max text repl size is not correct!'
    ELSE
    PRINT N'PASS: Max text repl size is correct.'

    IF NOT EXISTS (SELECT db.owner_sid FROM sys.databases db WHERE db.database_id = DB_ID() AND db.owner_sid = 0x01)
    PRINT N'ERROR: Database owner is not sa account!'
    ELSE
    PRINT N'PASS: Database owner is sa account.'

    IF NOT EXISTS( SELECT * FROM sys.databases db WHERE db.database_id = DB_ID() AND db.is_trustworthy_on = 1 )
    PRINT N'ERROR: Trustworthy bit is not on!'
    ELSE
    PRINT N'PASS: Trustworthy bit is on.'

    IF NOT EXISTS( SELECT * FROM sys.databases db WHERE db.database_id = DB_ID() AND db.is_broker_enabled = 1 )
    PRINT N'ERROR: Service broker is not enabled!'
    ELSE
    PRINT N'PASS: Service broker is enabled.'

    IF NOT EXISTS( SELECT * FROM sys.databases db WHERE db.database_id = DB_ID() AND db.is_honor_broker_priority_on = 1 )
    PRINT N'ERROR: Service broker priority is not set!'
    ELSE
    PRINT N'PASS: Service broker priority is set.'

    PRINT N'Done!'

    Branch_Exit:

可用性组配置

副本成员

  • 可用性组必须有一个主要副本。

  • 在可用性组中使用与SQL Server版本支持的副本数量和类型相同的副本。

  • 可以使用异步提交副本来恢复同步副本。 有关详细信息,请参阅 站点数据库恢复选项

    警告

    Configuration Manager不支持故障转移以使用异步提交副本作为站点数据库。 有关详细信息,请参阅故障转移和故障转移模式 (Always On可用性组)

Configuration Manager不验证异步提交副本的状态以确认其当前状态。 使用异步提交副本作为站点数据库可能会危及站点和数据的完整性。 根据设计,此副本可能不同步。 有关详细信息,请参阅SQL Server Always On可用性组概述

每个副本成员必须具有以下配置:

  • 使用 默认实例命名实例

    注意

    服务器上没有与SQL Server实例名称同名的文件共享。

  • 主要角色中的连接” 设置为 “允许所有连接”。

  • “可读辅助数据库”设置为“是”。

  • 手动故障转移启用

    注意

    设置为“自动故障转移”时,Configuration Manager支持使用可用性组同步副本。 在出现时设置 手动故障转移

    • 运行Configuration Manager安装程序以指定在可用性组中使用站点数据库。
    • 安装任何更新以Configuration Manager。 (不只是应用于站点数据库) 的更新。
  • 所有成员都需要相同的 种子设定模式Configuration Manager安装程序包括先决条件检查,用于在通过安装或恢复创建数据库时验证此配置。

    注意

    安装程序创建数据库并配置 自动 种子设定时,可用性组必须具有创建数据库的权限。 此要求适用于新数据库或恢复。 有关详细信息,请参阅 辅助副本的自动种子设定

副本成员位置

在本地可用性组中托管所有副本,或将它们全部托管在 Azure Microsoft。 不支持包含本地成员和 Azure 成员的组。

注意

如果使用 Azure 虚拟机进行SQL Server,请启用浮动 IP。 有关详细信息,请参阅在 Azure 虚拟机中为SQL Server Always On可用性组配置负载均衡器

Configuration Manager安装程序需要连接到每个副本。 在 Azure 中设置可用性组并且该组位于内部或外部负载均衡器后面时,请打开以下默认端口:

  • RPC 终结点映射程序: TCP 135

  • SQL Server Service Broker:TCP 4022

  • SQL over TCP: TCP 1433

安装完成后,这些端口必须保持打开状态,以便Configuration Manager和复制链接分析器。

可以将自定义端口用于这些配置。 终结点和可用性组中的所有副本使用相同的自定义端口。

若要SQL Server在站点之间复制数据,请为 Azure 负载均衡器中的每个端口创建负载均衡规则。 有关详细信息,请参阅 为内部负载均衡器配置高可用性端口

听众

可用性组必须至少有一个 可用性组侦听器。 将Configuration Manager配置为使用可用性组中的站点数据库时,它将使用此侦听器的虚拟名称。 尽管可用性组可以包含多个侦听器,但Configuration Manager只能使用一个侦听器。 有关详细信息,请参阅创建或配置SQL Server可用性组侦听器

文件路径

运行 Configuration Manager 安装程序以将站点配置为使用可用性组中的数据库时,每个辅助副本服务器必须具有一个SQL Server文件路径,该路径与当前主副本上的站点数据库文件的文件路径相同。 如果不存在相同的路径,安装程序无法将可用性组的 实例添加为站点数据库的新位置。

本地SQL Server服务帐户必须对此文件夹具有“完全控制”权限。

使用 Configuration Manager 安装程序指定可用性组中的数据库实例时,辅助副本服务器仅需要此文件路径。 在可用性组中完成站点数据库的配置后,可以从辅助副本服务器中删除未使用的路径。

例如,请考虑以下情况。

  • 创建一个使用三个 SQL Server 的可用性组。

  • 主副本服务器是 SQL Server 2014 的新安装。 默认情况下,它将数据库 MDF 和 LDF 文件存储在 中 C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA

  • 已将两个辅助副本服务器从以前的版本升级到 SQL Server 2014。 升级后,这些服务器会保留原始文件路径来存储数据库文件: C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA

  • 在将站点数据库移动到此可用性组之前,请在每个辅助副本服务器上创建以下文件路径: C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA。 此路径是主副本上使用的路径的副本,即使次要副本不会使用此文件位置。

  • 然后,为每个辅助副本上的 SQL Server 服务帐户授予对该服务器上新创建的文件位置的完全控制访问权限。

  • 现在可以成功运行Configuration Manager安装程序,将站点配置为使用可用性组中的站点数据库。

多子网故障转移

可以在 SQL Server 中启用 MultiSubnetFailover 连接字符串关键字。 还需要手动将以下值添加到站点服务器上的 Windows 注册表:

HKLM:\SOFTWARE\Microsoft\SMS\Identification
HKLM:\SOFTWARE\Microsoft\SMS\SQL Server

MSF Enabled : 1 (DWORD)

警告

使用具有多子网故障转移的站点服务器高可用性和SQL Server Always On可用性组并不能为灾难恢复方案提供自动故障转移的完整功能。

如果需要在远程位置创建具有成员的可用性组,请根据最低网络延迟设置优先级。 高网络延迟可能会导致复制失败。

限制和已知问题

以下限制适用于所有方案。

不支持SQL Server选项和配置

  • 基本可用性组:在 SQL Server 2016 Standard 版中引入,基本可用性组不支持对辅助副本的读取访问。 配置需要此访问权限。 有关详细信息,请参阅基本SQL Server可用性组

  • 故障转移群集实例:与 Configuration Manager 一起使用的副本不支持故障转移群集实例。 有关详细信息,请参阅SQL Server Always On故障转移群集实例

托管其他可用性组的 SQL Server

当SQL Server除了用于Configuration Manager的组之外,还托管一个或多个可用性组时,它需要在运行Configuration Manager安装程序时进行特定设置。 安装Configuration Manager的更新还需要这些设置。 每个可用性组中的每个副本必须具有以下配置:

  • 手动故障转移

  • 允许任何只读连接

注意

设置为“自动故障转移”时,Configuration Manager支持使用可用性组同步副本。 在出现时设置 手动故障转移

  • 运行Configuration Manager安装程序以指定在可用性组中使用站点数据库。
  • 安装任何更新以Configuration Manager。 (不只是应用于站点数据库) 的更新。

不支持的数据库使用

Configuration Manager仅支持可用性组中的站点数据库

可用性组中Configuration Manager不支持以下数据库:

  • 报告数据库

  • WSUS 数据库

预先存在的数据库

不能使用在副本上创建的新数据库。 配置可用性组时,将现有Configuration Manager数据库的副本还原到主副本。

ConfigMgrSetup.log 中的设置错误

运行 Configuration Manager 安装程序以将站点数据库移动到可用性组时,它会尝试处理可用性组的次要副本上的数据库角色。 ConfigMgrSetup.log 文件显示以下错误:

ERROR: SQL Server error: [25000][3906][Microsoft][SQL Server Native Client 11.0][SQL Server]Failed to update database "CM_AAA" because the database is read-only. Configuration Manager Setup 1/21/2016 4:54:59 PM 7344 (0x1CB0)

可以放心忽略这些错误。

站点扩展

如果将独立主站点的站点数据库配置为使用可用性组,则无法扩展站点以包含管理中心站点。 如果尝试此过程,它将失败。 若要展开站点,请暂时从可用性组中删除主站点数据库。

添加辅助站点时,无需对配置进行任何更改。

站点备份更改

备份数据库文件

当站点数据库使用可用性组时,请运行内置的备份站点服务器维护任务来备份常见的Configuration Manager设置和文件。 不要使用该备份创建的 MDF 或 LDF 文件。 请改为使用 SQL Server 直接备份这些数据库文件。

仍可以使用备份SQL Server,但无法将其直接还原到SQL Server Always On群集。 需要在独立服务器上还原它,并将其移回SQL Server Always On。

事务日志

将站点数据库的恢复模式设置为 “完整”。 此配置是可用性组中Configuration Manager使用的要求。 计划监视和维护站点数据库事务日志的大小。 在完整恢复模式下,事务在对数据库或事务日志进行完整备份之前不会强化。 有关详细信息,请参阅备份和还原SQL Server数据库

站点恢复的更改

如果可用性组的至少一个节点仍然正常运行,请使用 Site Recovery 选项 跳过数据库恢复 (如果站点数据库未受影响,) 使用此选项

站点恢复可以在可用性组中重新创建数据库。 此过程适用于手动和自动种子设定。

提示

运行安装/恢复向导时,“ 新建可用性组数据库 ”页仅适用于手动种子设定配置。 使用自动种子设定时,没有共享数据库备份,因此不会显示向导的页面。

有关详细信息,请参阅 备份和恢复

报表更改

安装 Reporting 服务点

Reporting Services 点不支持使用可用性组的侦听器虚拟名称。 它还不支持在可用性组中托管其数据库。

  • 默认情况下,Reporting Services 点安装会将 站点数据库服务器名称 设置为指定为侦听器的虚拟名称。 更改此设置以指定可用性组中副本的计算机名称和实例。

  • 若要卸载报告并在副本节点脱机时提高可用性,请考虑在每个副本节点上安装其他 Reporting Services 点。 然后,将每个 Reporting Services 点配置为使用其自己的计算机名称。 在可用性组的每个副本上安装 Reporting 服务点时,报表始终可以连接到活动报表服务器。

切换控制台使用的 Reporting Services 点

  1. 在Configuration Manager控制台中,转到“监视”工作区,展开“报告”,然后选择“报表”节点。

  2. 在功能区中,选择“ 报表选项”。

  3. 在“报表选项”对话框中,选择要使用的 Reporting Services 点。

后续步骤

本文介绍使用可用性组时Configuration Manager所需的常见任务的先决条件、限制和更改。 有关设置和配置站点以使用可用性组的过程,请参阅 配置可用性组