Debian MariaDB Galera 集群搭建步骤
一 方案与准备
- 采用 MariaDB Galera Cluster 实现多主同步复制,具备自动故障转移与数据强一致特性,适合高可用场景。准备至少 3 个节点(生产推荐),并统一 MariaDB 版本 与 Debian 版本。为各节点配置 静态 IP 与 主机名解析,并开放必要端口:3306/TCP(MySQL)、4567/TCP+UDP(复制流量)、4568/TCP(IST)、4444/TCP(SST)。如启用防火墙(UFW/iptables/firewalld),需放行上述端口。
二 安装与初始化
- 在所有节点安装 MariaDB 与 Galera 组件(Debian 12 常见为 mariadb-server、mariadb-client、galera-4;部分环境执行 apt install mariadb-server 即会自动拉取相关包):
- sudo apt update
- sudo apt install mariadb-server mariadb-client galera-4 -y
- 运行安全初始化(设置 root 密码、删除匿名用户、禁止远程 root 登录等):
- sudo mysql_secure_installation
- 建议在所有节点保持相同的系统时间与 NTP 同步,避免复制时序问题。
三 集群配置
- 在每个节点的 MariaDB 配置中启用 Galera(推荐在 /etc/mysql/mariadb.conf.d/50-server.cnf 的 [mysqld] 段或新增 /etc/mysql/conf.d/galera.cnf)。以下为最小可用示例(请替换实际 IP 与节点名):
- [mysqld]
- wsrep_on=ON
- wsrep_provider=/usr/lib/galera/libgalera_smm.so
- wsrep_cluster_address=“gcomm://192.168.100.111,192.168.100.112,192.168.100.113”
- wsrep_cluster_name=“MariaDB_Cluster”
- wsrep_node_address=“本节点IP”
- wsrep_node_name=“本节点名称”
- binlog_format=ROW
- default_storage_engine=InnoDB
- innodb_autoinc_lock_mode=2
- bind-address=0.0.0.0
- 说明:
- Galera 仅支持 InnoDB;建议设置 server-id(每个节点唯一)以便与其他复制方案共存。
- 常见 SST 方式为 rsync 或 xtrabackup-v2;若使用 xtrabackup-v2,需为 SST 创建专用用户并配置认证(wsrep_sst_auth)。
四 启动与验证
- 启动首个节点(初始化集群):
- 方式 A:sudo galera_new_cluster
- 方式 B:sudo systemctl stop mariadb 后执行 sudo mysqld_safe --wsrep-new-cluster &
- 启动其余节点:
- sudo systemctl start mariadb
- 验证集群状态(在任意节点执行 mysql -u root -p):
- SHOW STATUS LIKE ‘wsrep_cluster_size’;(应等于已加入节点数)
- SHOW STATUS LIKE ‘wsrep_connected’;(应为 ON)
- SHOW STATUS LIKE ‘wsrep_ready’;(应为 ON)
- 若节点加入失败,检查错误日志(/var/log/mysql/error.log)、防火墙与 SELinux/AppArmor 策略、以及 wsrep_cluster_address 是否可达。
五 运维与安全加固
- 防火墙与端口:放行 3306/4567/4568/4444(TCP;其中 4567 还需 UDP),确保节点间互通。
- SST 用户与权限(使用 xtrabackup-v2 时):
- CREATE USER ‘sstuser’@‘%’ IDENTIFIED BY ‘StrongPass!’;
- GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON . TO ‘sstuser’@‘%’;
- FLUSH PRIVILEGES;
- 在配置中设置:wsrep_sst_auth=sstuser:StrongPass!
- 管理与升级:
- 滚动升级时逐台停机、升级、启动,确保 wsrep_cluster_size 恢复后再处理下一台。
- 备份建议:定期逻辑备份(mysqldump)与物理备份(Percona XtraBackup)结合;变更前先备份。
- 高可用接入:在业务侧使用 HAProxy/Keepalived 提供 VIP 与读写分离/故障切换能力。