ping命令验证),关闭SELinux(setenforce 0)或配置为宽松模式,防火墙开放SQL Server默认端口(1433)及Always On相关端口(5022);yum-utils、curl、wget等基础工具(yum install -y yum-utils curl wget)。mssql-server-16.0.950.9-1.x86_64.rpm);ansible-collection-microsoft-sql角色(yum install -y ansible ansible-collection-microsoft-sql)。使用curl命令下载并添加SQL Server的YUM仓库文件:
sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/7/mssql-server-2019.repo
(注:若使用CentOS 8,可将rhel/7替换为rhel/8)
通过YUM包管理器安装SQL Server:
sudo yum install -y mssql-server
运行配置脚本设置管理员密码(SA账户)及版本(选择“Evaluation”免费版或付费版):
sudo /opt/mssql/bin/mssql-conf setup
按照提示输入密码(需符合复杂度要求,如包含大小写字母、数字和符号),等待安装完成。
启动服务并设置开机自启:
sudo systemctl start mssql-server
sudo systemctl enable mssql-server
验证服务状态:
sudo systemctl status mssql-server
(正常状态应为“active (running)”)
Always On特性需通过mssql-conf工具启用:
/opt/mssql/bin/mssql-conf set hadr.hadrenabled 1
sudo systemctl restart mssql-server
验证HADR状态:
SELECT serverproperty('HadrManagerStatus'); -- 返回1表示启用成功
Pacemaker是Linux下管理高可用的核心工具,需先配置集群框架:
hacluster用户身份):pcs cluster auth centos00 centos01 centos02 -u hacluster -p <密码>
crmcluster)及节点:pcs cluster setup --name crmcluster centos00 centos01 centos02
pcs cluster start --all
pcs cluster enable --all
stonith-enabled=false,仅测试环境使用):pcs property set stonith-enabled=false
ssh-keygen -t rsa
ssh-copy-id hacluster@centos01
ssh-copy-id hacluster@centos02
/etc/hosts文件,添加节点IP与主机名映射(所有节点一致):192.168.1.10 centos00
192.168.1.11 centos01
192.168.1.12 centos02
USE master;
GO
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'Always On Availability Groups', 1;
RECONFIGURE;
GO
TestAG为例),指定主副本(centos00)及辅助副本(centos01、centos02):CREATE AVAILABILITY GROUP [TestAG]
FOR DATABASE [YourDatabaseName]
REPLICA ON
'centos00' WITH (
ENDPOINT_URL = 'TCP://centos00:5022',
AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
FAILOVER_MODE = AUTOMATIC
),
'centos01' WITH (
ENDPOINT_URL = 'TCP://centos01:5022',
AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
FAILOVER_MODE = AUTOMATIC
),
'centos02' WITH (
ENDPOINT_URL = 'TCP://centos02:5022',
AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
FAILOVER_MODE = MANUAL
);
GO
ALTER AVAILABILITY GROUP [TestAG] JOIN;
GO
SELECT ag.name, ar.replica_server_name, ars.role_desc, ars.synchronization_health_desc
FROM sys.availability_groups ag
JOIN sys.availability_replicas ar ON ag.group_id = ar.group_id
JOIN sys.dm_hadr_availability_replica_states ars ON ar.replica_id = ars.replica_id;
(正常状态:主副本role_desc为PRIMARY,辅助副本为SECONDARY,synchronization_health_desc为HEALTHY)glibc版本一致(避免因库版本差异导致服务异常)。firewall-cmd命令:firewall-cmd --add-port=1433/tcp --permanent
firewall-cmd --add-port=5022/tcp --permanent
firewall-cmd --reload
hacluster用户的访问范围,避免未授权操作;mssql-conf工具配置)。/var/opt/mssql/log目录下的SQL Server日志及Pacemaker日志(/var/log/pacemaker/pacemaker.log),定位潜在问题;/etc/hosts文件是否一致,防火墙是否阻止通信;STANDBY/READ_ONLY),检查网络延迟(使用ping、traceroute命令);pcs status命令输出,确认集群节点状态(online/offline),重启异常节点的Pacemaker服务(systemctl restart pacemaker)。