galera cluster部署需三节点,先统一环境(禁selinux、配hosts、开防火墙端口),再装percona xtradb cluster,首节点用gcomm://引导,其余节点指向全部ip加入集群。

如果您希望在Linux系统中部署具备高可用特性的MySQL数据库集群,Galera Cluster是一个成熟的选择,它通过同步复制机制确保多节点间数据一致性。以下是完成Galera MySQL集群安装与基础配置的具体步骤:
一、准备三台Linux服务器并配置基础环境
Galera集群要求至少三个节点以避免脑裂,所有节点需运行相同版本的MySQL(推荐MySQL 8.0兼容Galera 4),且系统时间、主机名解析、防火墙策略必须统一协调。每个节点均需禁用SELinux并配置静态主机名与/etc/hosts映射。
1、在每台服务器上执行:sudo setenforce 0 && sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config。
2、使用hostnamectl set-hostname node1(依次设为node1/node2/node3)并写入/etc/hosts:192.168.1.10 node1,192.168.1.11 node2,192.168.1.12 node3。
3、开放防火墙端口:sudo firewall-cmd --permanent --add-port={3306,4567,4568,4444}/tcp && sudo firewall-cmd --reload。
二、安装Percona XtraDB Cluster(PXC)软件包
官方推荐使用Percona XtraDB Cluster发行版,其已集成Galera库与定制化mysqld,比手动编译MySQL+Galera更稳定。所有节点需安装完全相同的PXC版本。
1、添加Percona官方YUM仓库:sudo yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm。
2、启用PXC 8.0仓库:sudo percona-release enable-only pxc-80。
3、安装核心组件:sudo yum install percona-xtradb-cluster-full-80(自动拉取mysql-community-server、pxc-client、qpress等依赖)。
三、配置第一个节点(引导节点)的my.cnf
首节点启动时需以引导模式初始化集群,其配置文件必须明确声明为引导源,并启用wsrep提供者及集群地址。其他节点将据此加入。
1、编辑/etc/percona-xtradb-cluster.conf.d/mysqld.cnf,在[mysqld]段下添加:
2、wsrep_on=ON。
3、wsrep_provider=/usr/lib64/galera4/libgalera_smm.so。
4、wsrep_cluster_address=gcomm://(注意末尾为gcomm://,表示本节点为初始引导点)。
5、wsrep_node_name=node1与wsrep_node_address=192.168.1.10(填写对应节点IP)。
四、启动首个节点并初始化集群
仅在首节点执行此操作;该过程将创建系统数据库、生成SSL证书、加载wsrep插件,并监听集群通信端口。若失败,需检查错误日志/var/log/mysqld.log。
1、停止默认mysqld服务:sudo systemctl stop mysqld。
2、以安全引导方式启动:sudo /usr/bin/mysqld_bootstrap(PXC 8.0专用命令,替代旧版service mysql start --wsrep-new-cluster)。
3、验证集群状态:mysql -u root -e "SHOW STATUS LIKE 'wsrep_cluster_size';",返回结果应为1。
五、配置并启动其余两个节点
后续节点不再使用gcomm://,而须指向已运行节点的IP地址,实现动态加入。各节点配置中wsrep_cluster_address值必须一致,且包含全部节点IP(逗号分隔)。
1、在node2的mysqld.cnf中设置:wsrep_cluster_address=gcomm://192.168.1.10,192.168.1.11,192.168.1.12。
2、同样配置wsrep_node_name=node2与wsrep_node_address=192.168.1.11。
3、在node2上执行:sudo systemctl start mysql(无需bootstrap)。
4、在node3上重复步骤1–3,仅修改对应名称与IP。










