在Linux中安装MSSQL 2017 Always On Availability Group

0    658    2

Tags:

👉 本文共约8291个字,系统预计阅读时间或需32分钟。

SQL Server 2017 最多支持9个副本(1个主副本和8个辅助副本),其中最多支持3个自动故障转移和3个同步提交的可用性副本。Linux 环境的AlwaysOn AG 不依赖于 Active Directory,可以在没有 Windows Server故障转移群集(WSFC)和 Pacemaker(Linux集群资源管理器)情况下搭建 Always On Availability Groups。以前是先配置 WSFC 再配置 Always On AG。Linux 环境下可以先配置 Always On AG ,再配置群集资源管理器。

Linux 上安装 SQL Server AG 步骤:

  1. 在 Linux 群集节点上安装和配置 SQL Server 2017
  2. 创建 SQL Server 2017 Always On Availability Group
  3. 配置 Pacemaker - Linux 集群资源管理器
  4. 将 SQL Server 2017 Always On Availability Group 添加为群集中的资源

相关包目录:https://packages.microsoft.com/

一、架构

安装配置环境

现在创建三台CentOS 7 的服务器: 172.72.9.100,172.72.9.101,172.72.9.102

安装MSSQL

配置过程:

二、SQL Server 证书及权限配置

参考:https://docs.microsoft.com/zh-cn/sql/linux/sql-server-linux-availability-group-configure-ha?view=sql-server-2017

既然没有了域认证,需要配置证书认证,步骤:

  1. 启用SQL Server Always On Availability Groups功能
  2. 在所有服务器上为SQL Server Always On Availability Groups安装Linux资源代理
  3. 在所有Linux服务器启用防火墙上的Always On Availability Group端点端口
  4. 在主副本上创建数据库主密钥
  5. 创建将用于加密可用性组端点的证书
  6. 使用证书为主副本创建Always On Availability Group端点进行身份验证
  7. 将证书导出到文件
  8. 将证书文件复制到辅助副本
  9. 授予证书文件的SQL Server帐户权限
  10. 在主副本上创建登录账号以供辅助副本使用
  11. 为登录账号创建用户
  12. 将步骤5中创建的证书与用户关联
  13. 授予登录账号的CONNECT权限

1.所有服务器:启用 hadr 功能(Always On Availability Groups)

在托管 SQL Server 实例的每个节点上启用 AlwaysOn 可用性组。 然后重新启动 mssql-server。 运行以下脚本:

image-20211217102119966

启用 AlwaysOn_health 事件会话

可选择性地启用 AlwaysOn 可用性组的扩展事件,以便在对可用性组进行故障排除时帮助诊断根本原因。 在每个 SQL Server 实例上运行以下命令:

2.所有服务器:为 SQL Server AlwaysOn AG 安装Linux资源代理

群集资源代理程序 mssql-server-ha 是 Pacemaker 和 SQL Server 之间的接口

结果:

3.所有服务器:启用防火墙上的 AlwaysOn AG 端点默认端口5022 (或关闭防火墙!)

跑脚本完成第4-7步

8.各服务器上的证书相互传给其他服务器

3台查询:

9.所有服务器:授予证书文件所有者权限

10.各实例证书还原及账号授权

SSMS 连接到任意一个实例,查询选项启用[SQLCMD模式],批量执行以下脚本

三、AG配置

现可在 Windows 上使用 SSMS 连接 Linux 上的 SQL Server 配置 AlwaysOn AG。

脚本运行

https://docs.microsoft.com/zh-cn/sql/linux/sql-server-linux-availability-group-configure-ha?view=sql-server-ver15

创建AG

创建具有三个同步副本的 AG,只在lhrmssql100上运行:

将次要副本联接到 AG

在lhrmssql101和lhrmssql102上运行:

运行完成后:

将数据库添加到可用性组

确保添加到可用性组的数据库处于完全恢复模式,并具有有效的日志备份。 如果是测试数据库或新建的数据库,请执行数据库备份。

只在主服务器上运行:

验证是否已在辅助服务器上创建了数据库:

image-20211217143658226

侦听器状态:

图形运行

1. 在节点 lhrmssql100 实例上创建可用性组,名为 LINUX_SQLAG

  • Windows Server 故障转移群集:当可用性组托管在属于 Windows Server 故障转移群集的 SQL Server 的实例上时使用,以实现高可用性和灾难恢复。 适用于所有受支持的 SQL Server 版本。
  • EXTERNAL :当可用性组托管在由外部群集技术(例如 Linux 上的 Pacemaker)管理的 SQL Server 的实例上时使用,以实现高可用性和灾难恢复。 适用于 SQL Server 2017 (14.x) 及更高版本。
  • NONE :当可用性组托管在不由群集技术管理的 SQL Server 的实例上时使用,以实现读取缩放和负载均衡。 适用于 SQL Server 2017 (14.x) 及更高版本。

选择 EXTERNAL,Linux 环境下,创建并配置Always On Availability Group后,将安装和配置Pacemaker。“数据库级别运行状况检测” 勾选此框,为可用性组启用数据库级别运行状况检测 (DB_FAILOVER)。 数据库运行状况检测会说明数据库何时不再处于联机状态、何时出错以及何时触发可用性组的自动故障转移。(更多参考:Always On 可用性组的“指定可用性组选项”页

2. 选择可用性数据库

先创建数据库,然后添加到可用性组里。

3. 添加副本并设置

可以看到,故障转移模式从以前的“手动” 和“自动”,变为 “外部(External)”。故障转移模式值 External 用于与 Pacemaker 等Linux集群资源管理器一起处理故障转移。

其他选项配置都差不多:

4. 侦听器配置

必须手动将侦听器名称添加为DNS记录: LINUX_LSNAG , IP为 192.168.2.119

img

创建侦听器:

img

5. 只读路由配置

image-20211217113127923

6. 选择数据库同步

这里选择 “自动种子设定” ,因为数据库较小。SQL Server 自动为此组中的每个数据库创建次要副本。 自动种子设定要求数据和日志文件路径在参与此组的每个 SQL Server 实例上均相同。(更多参考:“选择初始数据同步”页(AlwaysOn 可用性组向导)

7. 验证及检查

完成后结果:

img

img

但此时侦听器的状态是离线的:

img

虽然 SQL Server Always On Availability Group 安装成功了,但是现在无法进行故障转移

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复