前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL Server ON Linux 高可用

SQL Server ON Linux 高可用

作者头像
IT大咖说
发布2021-03-14 20:42:40
1.7K0
发布2021-03-14 20:42:40
举报
文章被收录于专栏:IT大咖说

前言:

SQL Server 已经支持Linux 有很长一段时间了,包括传统群集、高可用性组等,今天测试SQL 2019在Linux 下的高可用组配置。

预计步骤:

环境:

节点三台。

一、安装操作系统 【略】

版本:CentOS Linux release 7.2.1511 (Core) 最小化安装

二、配置本地解析,如果有DNS忽略 【略】

配置主机HOSTNAME,更改HOSTS文件,确保访问正常。

三、配置SSH 证书登录

生成密钥

ssh-keygen -t rsa

将/root/.ssh/id_rsa.pub内容复制到 /root/.ssh/ssh-keygen -t rsa 【每节点】

配置SSH 允许证书登录,自己测试一把。

四、安装SQL 【每节点】

测试环境建议关闭防火墙、SELINUX

下载SQL REPO包

wget https://packages.microsoft.com/config/rhel/7/mssql-server-2019.repo

安装:

yum install -y mssql-server

初始化SQL

选择版本,配置SA密码

6是企业版,看清楚。

查看运行状态:

systemctl status mssql-server

安装SQL命令行工具:

下载REPO

wget https://packages.microsoft.com/config/rhel/7/prod.repo

安装

yum install -y mssql-tools unixODBC-devel

yum安装到/opt/mssql-tool下,如果想省事,自己添加环境变量,否则使用命令行请到此路径bin/目录下执行sqlcmd

本地连接SQL

sqlcmd -S localhost -U SA -P '<YourPassword>'

如果出现 1> 说明成功。

三、配置高可用组

可以参考官方链接:

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

这里直说步骤,具体的可参考官方链接。

/opt/mssql/bin/mssql-conf set hadr.hadrenabled 1 # 所有节点执行,开启可用性组功能

重启所有节点mssql

systemctl restart mssql-server

创建可用性组终结点和证书 【具体操作忽略,每节点】

将所有节点的证书彼此复制到所有节点,并更改文件属主 mssql 【具体操作忽略,每节点】

在所有节点创建与其他节点管理的实例级登录名和用户 【具体操作忽略,每节点】

将节点用户与证书关联 【具体操作忽略,每节点】

完成以上就可以通过SSMS创建可用性组了

首先需要创建一个数据库,并对数据库做全备。

这里有个坑,注意下图,默认有DOMAIN,如果你没有FQDN,那么该是什么就写什么,多余的删除,否则会失败。

此步骤成功后,那么SQL 可用性组已经创建完了,节点的SQL复制是没有问题的,但是无法切换。

需要Pacemake做底层Failover.

为 Pacemaker 创建 SQL Server 登录和权限,所有节点执行 【具体操作忽略,每节点】

四、安装 Pacemaker

yum install pacemaker pcs fence-agents-all resource-agents -y

创建 Pacemake使用的账号密码

passwd hacluster

配置启动

systemctl enable pcsd

systemctl enable pacemaker.service

systemctl enable corosync.service

启动服务

systemctl start pcsd

查看运行状态

systemctl status pcsd

为群集节点授权

pcs cluster auth sqlag01 sqlag02 sqlag03 -u hacluster

pcs cluster setup --name sqlcluster sqlag01 sqlag02 sqlag03 #sqlcluster 为群集名称

启动Packemaker Cluster

pcs cluster start --all enable

检查Pacemaker Cluster群集状态

pcs status --full

安装 SQL Server HA 和 SQL Server 代理包

yum install mssql-server-ha

systemctl restart mssql-serve

编辑文件 【所有节点】

/var/opt/mssql/secrets/passwd 增加以下两行内容:

PMLogin

强密码

说明:

PMLogin 为前面创建的:为 Pacemaker 创建 SQL Server 登录和权限

记得对可用性组授权。

完成后:在集群中创建资源及关联资源

在 Pacemaker 群集中创建可用性组资源(仅限外部类型)

资源组:AG本身及IP地址

1.1 创建可用性资源组:

sudo pcs resource create <NameForAGResource> ocf:mssql:ag ag_name=<AGName> meta failure-timeout=30s --master meta notify=true

示例:

sudo pcs resource create ag_cluster ocf:mssql:ag ag_name=ag1 meta failure-timeout=60s master notify=true

<NameForAGResource> 资源组唯一的名称

<AGName> SQL中可用性组的名称

1.2 创建侦听器IP地址资源

pcs resource create <NameForIPResource> ocf:heartbeat:IPaddr2 ip=<IPAddress> cidr_netmask=<Netmask>

示例:

sudo pcs resource create virtualip ocf:heartbeat:IPaddr2 ip=10.128.16.240

1.3 要确保 IP 地址和 AG 资源在同一节点上运行,必须配置并置约束

sudo pcs constraint colocation add <NameForIPResource> <NameForAGResource>-master INFINITY with-rsc-role=Master #没有空格,连在一起的

示例:

sudo pcs constraint colocation add virtualip ag_cluster-master INFINITY with-rsc-role=Master

说明:IP地址资源名称:virtualip AG资源名称:ag_cluster-master

删除:

pcs constraint colocation remove virtualip ag_cluster-master

1.4 创建排序约束以确保 AG 资源在 IP 地址之前启动并运行。虽然并置约束意味着排序约束,但这将强制执行它

sudo pcs constraint order promote <NameForAGResource>-master then start <NameForIPResource>

示例:

sudo pcs constraint order promote ag_cluster-master then start virtualip

删除:

pcs constraint order remove virtualip ag_cluster-master

可能的问题:

群集AG资源无法启动,关联后连群集IP地址都无法启动

解决办法:

1、尝试手动故障转移

pcs resource move ag_cluster-master sqlag03 --master

2、如果失败,尝试在SQL中删除AG组,重新创建

在这个过程中需要观察群集资源状态。

以下状态正常:

经过测试手动,自动故障转移均OK.

来源:

https://www.toutiao.com/i6933087068327297548/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-02-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT大咖说 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档