中标麒麟系统下MariaDB Galera多主集群如何初始化部署?

来源:主机评测作者:南京网站建设头衔:草根站长
导读:本期聚焦于南京网站建设创作的《中标麒麟系统下MariaDB Galera多主集群如何初始化部署?》,敬请观看详情。Galera Cluster是实现MariaDB多主同步复制的高可用方案,任意节点都可读写,数据强一致性由wsrep组件保证。本文以中标麒麟操作系统为环境,详细讲解从系统准备、软件安装、my.cnf参数配置,到首个节点bootstrap初始化、其余节点加入以及集群状态验证的完整流程,同时梳理防火墙端口、SELinux关闭等常见部署障碍的排查思路,帮助读者在生产环境中顺利搭建多主集群。

在中标麒麟这类国产化服务器操作系统上部署数据库集群,已经成为不少政企项目的标配需求。MariaDB自带的Galera Cluster插件提供了一个成熟的多主同步复制方案:集群内所有节点地位平等,任意节点都能同时接受写入,数据在事务提交时同步到整个集群,从根本上避免了传统主从架构的数据延迟问题。本文将围绕中标麒麟环境,完整演示Galera多主集群从零到可用的初始化过程。

中标麒麟系统下MariaDB Galera多主集群如何初始化部署?

一、部署前的环境准备

Galera集群对节点间的网络质量要求较高,建议所有节点部署在同一内网,且彼此之间延迟控制在局域网水平。这里以三台中标麒麟服务器为例,规划如下:三台机器的主机名分别设置为galera1、galera2、galera3,IP地址按顺序编排,并且在每台机器的hosts文件中做好解析记录。主机名解析非常关键,Galera在节点间建立通信时会用到,解析失败会直接导致节点无法加入集群。

其次要处理系统层面的干扰因素。Galera依赖四个TCP端口完成工作:3306是标准的MySQL服务端口,4567是Galera复制流量端口,4568是状态转移端口,4444是快照传输端口。如果防火墙开着,需要把这四个端口全部放行,或者在内网环境下直接关闭防火墙。SELinux同样可能拦截wsrep的通信行为,部署阶段建议先设置为宽容模式,集群稳定后再根据审计日志定制策略。

# 三台节点都执行
hostnamectl set-hostname galera1
cat >> /etc/hosts << EOF
192.168.10.11 galera1
192.168.10.12 galera2
192.168.10.13 galera3
EOF

# 放行Galera所需端口
firewall-cmd --permanent --add-port={3306,4567,4568,4444}/tcp
firewall-cmd --reload

# 临时关闭SELinux
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config

另外需要注意,MariaDB的Galera集群要求各节点的MariaDB版本尽量一致,尤其是wsrep API版本必须相同,否则握手阶段就会报协议不兼容错误。中标麒麟的软件仓库中通常自带MariaDB-galera-server相关包,直接用yum安装可以省去解决依赖的麻烦。

二、安装软件与配置wsrep参数

软件安装比较简单,在三台节点上分别执行yum安装命令即可。以中标麒麟V7为例,需要安装的包包括MariaDB-Galera-server、MariaDB-client以及galera共享库。安装完成后先不要启动服务,因为默认配置并不是集群模式,必须先修改配置文件。Galera的配置统一写在my.cnf的wsrep区段中,核心参数的含义必须理解清楚再动手改。

yum install -y MariaDB-Galera-server MariaDB-client galera

关键参数有几个:wsrep_provider指定Galera复制库的路径,这个so文件的路径在麒麟系统上一般是/usr/lib64/galera/libgalera_smm.so,可以用find命令确认;wsrep_cluster_name是集群名称,所有节点必须完全一致;wsrep_cluster_address填写三个节点的地址列表;wsrep_node_address写本机IP;wsrep_sst_method推荐使用rsync,简单可靠,生产环境数据量大时可以换成xtrabackup-v2来减少锁定时间;binlog_format必须设置为ROW,这是Galera的硬性要求。

[mysqld]
binlog_format=ROW
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0

# Galera配置
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_name=kylin_galera_cluster
wsrep_cluster_address=gcomm://192.168.10.11,192.168.10.12,192.168.10.13
wsrep_node_name=galera1
wsrep_node_address=192.168.10.11
wsrep_sst_method=rsync
wsrep_sst_auth=sst_user:SstPass123!

上面这个配置块在三个节点上基本相同,只有wsrep_node_name和wsrep_node_address需要根据每台机器的实际信息修改。innodb_autoinc_lock_mode=2这个参数容易被忽略,它把自增锁设置为交错模式,是Galera多主环境下保证性能的前提。配置写好后不要急着启动,还有一个关于根节点引导的问题需要重点说明。

三、首节点bootstrap引导与集群验证

Galera集群的启动顺序有严格讲究:第一个节点必须以引导模式启动,也就是所谓的bootstrap。它的工作原理是让该节点初始化一个全新的集群,成为集群中的第一个成员。如果三个节点都用普通的mysqld_safe方式启动,每个节点都会各自形成一个单节点集群,互相之间完全孤立,这是新手最容易踩的坑。

# 只在galera1上执行引导启动
/etc/init.d/mysql bootstrap-pxc
# 或者
galera_new_cluster

# galera2和galera3正常启动
systemctl start mariadb

引导成功后,在galera1上登录MariaDB,创建SST传输账号,这个账号要和配置文件中wsrep_sst_auth的值保持一致。然后依次启动galera2和galera3,新节点启动时会自动通过SST从已有节点同步全量数据,同步期间会有明显的IO和网络流量,等同步完成节点才算真正上线。

最后是验证环节。在任意节点执行状态查询,重点看三个指标:wsrep_cluster_size应该显示为3,代表集群成员数正确;wsrep_ready必须为ON,表示该节点已准备好接受查询;wsrep_local_state_comment为Synced说明数据同步完毕。

SHOW STATUS LIKE 'wsrep_cluster_size';
SHOW STATUS LIKE 'wsrep_ready';
SHOW STATUS LIKE 'wsrep_local_state_comment';

-- 在galera1上建库插入数据
CREATE DATABASE testdb;
USE testdb;
CREATE TABLE t1 (id INT PRIMARY KEY, name VARCHAR(50));
INSERT INTO t1 VALUES (1, 'kylin');

-- 到galera2上查询验证
SELECT * FROM testdb.t1;

如果能在galera2上直接查到galera1写入的数据,反向也测试一遍,说明多主同步已经生效。还要提醒一点:当整个集群全部宕机后重新启动,不能随便挑一个节点bootstrap,而应该选择gcomm://视图中最先退出的节点,否则可能丢失最后一次提交的事务。掌握这套初始化流程后,后续的滚动重启、节点扩容都遵循同样的加入逻辑,维护成本会低很多。

中标麒麟MariaDBGalera集群修改时间:2026-09-11 19:08:40

免责声明:已尽一切努力确保本网站所含信息的准确性。网站作品多为原创整理与精心创作,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们进行处理Email:chomcom@qq.com。
引用或转载本作品时,请注明当前出处:https://www.ipipp.com/html/20260911/54849.html,基于非商业用途的前提下,欢迎转载或二创本作品。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。