SQL Server ON Linux 高可用(sql server高可用性)
ahcoder 2025-06-13 10:50 2 浏览
前言:
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.
相关推荐
- linux服务器--PVE(一)简介及安装(pve安装ifupdown2)
-
1.PVE(ProxmoxVirtualEnvironment)简介ProxmoxVirtualEnvironment基于debian,是一个完整的、开源的企业虚拟化服务器管理平台。它在一个平...
- 手把手教你!如何在 Linux 服务器中搭建 Sentinel 环境?
-
你在Linux服务器上搭建Sentinel环境时,是不是也遇到过各种报错,要么是启动失败,要么是配置后无法正常访问控制台?看着同事顺利搭建好,自己却一头雾水,别提多着急了!其实,很多互联网大厂...
- Linux高性能服务器技术总结(linux高性能服务器编程怎么样)
-
1服务器简介服务器是提供计算服务的设备,由于服务器需要响应用户请求,因此在处理能力、稳定性、安全性、可扩展性、可管理性等方面提出了较高要求。随着虚拟化技术的进步,云服务器(ECS)已经快速的在...
- 从 0 到 1:使用 Ansible 自动化运维 Linux 服务器全流程
-
Ansible是一款强大的IT自动化工具,广泛用于服务器配置管理、软件部署和任务自动化。本文将带你从零开始,学习如何使用Ansible对Linux服务器进行自动化运维,涵盖Ansibl...
- 诡异!Win11 “此电脑” 莫名现 Linux 图标,啥情况?
-
我这电脑出了个怪事儿,“此电脑”下面莫名其妙多了个Linux的图标,可我压根儿就没装过Linux系统啊!琢磨了一下,估计是系统可选功能里那个“适用于Linux的Windows子系统”插件搞的鬼。实例系...
- Linux基础运维篇:Linux 终端与 Shell 基础(第006课)
-
一、啥是终端?先搞懂「人和电脑对话的窗口」你可以把终端(Terminal)理解成一个「文字版的电脑操作台」。在Windows里,类似「命令提示符」或PowerShell;在Linux里,...
- 2025罗技大师系列智「简」大赛-罗技大师系列-MX KEYS S键盘评测
-
在2025罗技大师系列智「简」大赛中,MXKEYSS键盘凭借其卓越的设计与智能化体验,成为众多创作者的理想之选。本篇文章将深入评测这款键盘的核心功能、使用体验及创新亮点,帮助你了解它如何提升...
- Linux编辑命令vim(linux使用vim编辑文件)
-
1、vi编辑器简介vim是一个全屏幕纯文本编辑器,是vi编辑器的增强版,我们主要讲解的是vim编辑器。可以利用别名让输入vi命令的时候,实际上执行vim编辑器,例如:#定义别名...
- 全选是ctrl加什么?全选的快捷键是什么介绍
-
如何高效使用「全选」快捷键(Ctrl+A/A)提升工作效率在日常电脑操作中,"全选"是最基础却至关重要的功能之一。无论您是文字工作者、程序员还是普通用户,掌握全选快捷键都能极大提升操作...
- Linux命令大全(linux命令大全书)
-
个人博客:https://chunyu.work/文章较长,可以收藏备用常用快捷键(1)ctrl+c:停止进程(2)ctrl+l:清屏(3)善于用tab键(4)上下键:查找执行过的命令文件目录类(...
- Xshell是做什么用的?Xshell使用教程分享
-
Xshell是一款功能强大的终端模拟器,支持SSH1,SSH2,SFTP,TELNET,RLOGIN和SERIAL。通过提供业界先进的性能,Xshell包含了其他SSH客户端无法发现的功能和优势,作为...
- Java 开发者线上问题排查常用的 15 个 Linux 命令
-
作为Java开发者,线上环境的问题排查是日常工作的重要组成部分。熟练掌握Linux命令能大幅提升排查效率,快速定位进程异常、日志错误、性能瓶颈等核心问题。本文结合Java应用特点,整理1...
- Linux的常用命令就是记不住,怎么办?
-
1.帮助命令1.1help命令#语法格式:命令--help#作用:查看某个命令的帮助信息#示例:#ls--help查看ls命令的帮助信息#netst...
- 别再乱学 Linux 了!这 5 个核心技巧,让你效率飙升 10 倍!
-
在Linux学习的漫漫长路上,不少人犹如在黑暗中摸索的行者,四处碰壁,学习效果却不尽如人意。你是不是也曾在海量的Linux知识面前迷失方向,感觉自己投入了大量时间,却收效甚微?其实,掌握Li...
- Linux终端神器Terminator时隔1年回归,2.1.5新版发布
-
IT之家5月23日消息,科技媒体linuxiac今天(5月23日)发布博文,报道称Terminator在沉寂一年后,最新发布了2.1.5版本,在分割终端窗格时支持克隆SSH...
- 一周热门
- 最近发表
-
- linux服务器--PVE(一)简介及安装(pve安装ifupdown2)
- 手把手教你!如何在 Linux 服务器中搭建 Sentinel 环境?
- Linux高性能服务器技术总结(linux高性能服务器编程怎么样)
- 从 0 到 1:使用 Ansible 自动化运维 Linux 服务器全流程
- 诡异!Win11 “此电脑” 莫名现 Linux 图标,啥情况?
- Linux基础运维篇:Linux 终端与 Shell 基础(第006课)
- 2025罗技大师系列智「简」大赛-罗技大师系列-MX KEYS S键盘评测
- Linux编辑命令vim(linux使用vim编辑文件)
- 全选是ctrl加什么?全选的快捷键是什么介绍
- Linux命令大全(linux命令大全书)
- 标签列表
-
- linux 远程 (37)
- u盘 linux (32)
- linux 登录 (34)
- linux 路径 (33)
- linux 文件命令 (35)
- linux 是什么 (35)
- linux 界面 (34)
- 查看文件 linux (35)
- linux 语言 (33)
- linux代码 (32)
- linux 查看命令 (33)
- 关闭linux (34)
- root linux (33)
- 删除文件 linux (35)
- linux 主机 (34)
- linux与 (33)
- linux 函数 (35)
- linux .ssh (35)
- cpu linux (35)
- 查看linux 系统 (32)
- linux 防火墙 (33)
- linux 手机 (32)
- linux 镜像 (34)
- linux ip地址 (34)
- linux 用户查看 (33)