Microsoft SQL 可用性组

可用性组(AG)是 MSSQL Server的高可用性集群。它在数据库 Server发生故障时充当备份。
数据库 Server存储附件、通知和外部资源。如果数据库 Server发生故障,Microsoft SQL 集群中的一台Server将充当数据库 Server,以确保 ServiceDesk Plus application持续不中断运行。

配置 Always On 可用性组

 

AG 配置的前提条件

  • 要在 changeDBServer 中配置的用户应具有 VIEW Server STATE 权限。
  • 辅助节点应设置为“Readable/Read-Intent Only”。
对于未配置前提条件或未进行基本 AG 配置的环境,请单击此处

 

 

1. 在主节点中创建数据库 (如果不是全新安装,请跳过此步骤)

在 ServiceDesk Plus 的 bin 目录中,执行 changeDBServer.bat [Linux 中为 changeDBServer.sh] 命令。
数据库设置向导将会打开。请使用以下提示填写所需的Server详细信息:

  • Server类型:将Server类型选择为 SQL Server。
  • 主机类型:将主机类型选择为 Default。
  • 主机名:输入要创建数据库的主节点。
  • 端口:指定 SQL Server 端口号。默认端口号为 1433。
  • 可用的 SQL Server 实例:系统会自动填充主Server名称。如果未自动填充,请从下拉列表中选择主Server。
  • 数据库:默认情况下,数据库名称设置为 servicedesk。如有需要,请编辑。
  • 用户名和密码:指定该Server的登录凭据。
  • 主密钥密码:输入主密钥密码,用于加密数据库中的 SCHAR 列。仅在创建数据库时需要此项。

 

 具有 DBCreator / DBOwner 权限的用户可以创建主密钥。要了解更多信息,请单击此处

 要检查连接是否可用,

  •  单击Test。如果成功,将弹出一个显示“连接已建立”消息的窗口。
  • 单击OK继续。
  • 单击Save以保存 SQL Server 设置。

 

 

2. 复制数据库 (如果数据库已复制,请跳过此步骤):

  • 创建数据库后,启动并停止 ServiceDesk Plus application。
  • 在 SQL Server 中,通过导航到 Always On High Availability > Availability Groups > Group > Availability Databases > Add Database 来复制数据库。

 

 

SQL Server Management Studio 向导中配置 AG 时,
在“选择初始数据同步”页面中,选择完整数据库和日志备份。这会将数据库主密钥密码存储在两个节点的凭据中。

 

 

 3. 使用 changeDBServer 配置 AG  

在 ServiceDesk 的 bin 目录中,执行 changeDBServer.bat [Linux 中为 changeDBServer.sh] 命令。
数据库设置向导将会打开。请使用以下提示填写所需的Server详细信息:

  • Server类型:选择 SQL Server。
  • 主机类型:将主机类型选择为 AG。
  • 主机名:输入虚拟侦听器的 IP 地址/名称。
  • 端口:指定 SQL Server 端口号。默认端口号为 1433。
  • 数据库:默认情况下,数据库名称设置为 servicedesk。如有需要,请编辑。
  • 用户名和密码:指定该Server的登录凭据。
  • 主密钥密码:输入在创建数据库期间配置的主密钥密码。

要检查连接是否可用,

  • 单击Test。如果成功,弹出窗口将显示“连接已建立”消息。
  • 单击OK继续。
  • 单击Save以保存 SQL Server 设置。

AG 验证:

保存 AG 配置时,将执行 AG 验证。如果在验证过程中检测到问题,将显示预定义的错误代码。 

错误代码详情:

错误代码说明建议操作

AG2000*

 

已配置的用户缺少 VIEW Server STATE 权限。为已配置的用户授予 VIEW Server STATE 权限。

AG2001*

 

辅助节点不可读。将辅助节点设置为可读/仅 Read-Intent。
AG2002*各个节点无法访问,或者端口与侦听器端口不匹配。

检查各个节点上的 SQL Server 端口是否被防火墙配置阻止。

检查所有各个节点上的 SQL Server Browser 服务是否正在运行

AG1000配置的是物理节点而不是虚拟侦听器。在“主机名”字段中配置虚拟侦听器。
AG1001目标数据库未在节点之间复制。按照第 2 步中提到的复制步骤,在各节点之间复制数据库。
AG1002某个节点的数据库中缺少数据库主密钥。

如果这些错误出现在 AG 配置中的 Health Meter 中,请运行 verifyAG.bat/verifyAG.sh,并将输出共享给 ServiceDesk Plus 支持团队。 

如果这些错误出现在 changeDBServer 配置中,请将 logs 文件夹和错误消息共享给 ServiceDesk Plus 支持团队。

 

 

 

AG1003某个节点的数据库中缺少证书。
AG1004某个节点的数据库中缺少对称密钥。
AG1008节点中缺少凭据存储条目(这通常发生在复制数据库时选择了 AutoSeeding 的情况下。)

从 <APP_HOME>\bin 目录运行以下命令:

Windows:

verifyAG.bat true

 

Linux:

verifyAG.sh true

 

有关 AG 配置的更多信息,请单击此处

 

* 对于未配置前提条件或未进行基本 AG 配置的环境:

 

按照以下过程进行手动 AG 验证,以检查在复制数据库时是否选择了 AutoSeeding 选项。

  • 在每个单独的节点上运行以下查询:

 

select sc.credential_id from sys.credentials sc
inner join sys.master_key_passwords sm on sm.credential_id= sc.credential_id
left join msdb.dbo.backupset md on md.family_guid = sm.family_guid
where md.database_name = '<database_name>';

 

  • 如果查询未返回任何值,请在相应节点上运行以下查询:

 

EXEC sp_control_dbmasterkey_password @db_name = N'<database_name>'
    , @password = N'<Master_Key_Password>'
, @action = N'add' ;

 

运行查询前,请相应替换 <database_name> 和 <Master_Key_Password> 的值。