MariaDB Linux版集群部署指南

一 方案选型与准备
- 常见方案对比
- MariaDB Galera Cluster:支持多主同步复制、强一致性以及任意节点读写,适合搭建高可用 MariaDB 集群和进行横向扩展;仅支持 InnoDB/XtraDB 存储引擎。
- 主从复制(异步/半同步):部署方式相对简单,便于实现读写分离,但可能存在复制延迟,同时也有单主写入性能瓶颈。
- 节点规划建议
- 建议使用至少 3 节点 组成 Galera 集群,以避免脑裂并保证仲裁能力;同时确保各节点时间同步,例如使用 NTP。
- 需要提前开放端口:3306(MySQL)、4567(Galera 集群通信)、4568(IST)、4444(SST/rsync),以及 22(SSH 运维管理)。
- 系统与安全设置:建议关闭 SELinux 或调整为 permissive 模式;根据实际需求配置防火墙并放行上述端口;同时准备好用于 SST 的数据库账号及对应权限。
二、部署Galera多主集群的具体步骤
- 安装软件包
- Ubuntu/Debian:可通过 apt 安装 mariadb-server mariadb-client rsync。
- RHEL/CentOS:可使用 yum/dnf 安装 MariaDB-Galera-server MariaDB-client galera rsync;部分系统环境还需要提前安装 socat。
- 配置文件 /etc/my.cnf.d/server.cnf(所有节点)
- 关键参数示例:
- [mysqld]:bind-address=0.0.0.0;binlog_format=row;default_storage_engine=InnoDB;innodb_autoinc_lock_mode=2;innodb_flush_log_at_trx_commit=2;innodb_buffer_pool_size(可根据服务器内存进行调优,如 1G)。
- [galera]:wsrep_on=ON;wsrep_node_name=本机名;wsrep_node_address=本机IP;wsrep_cluster_name=mariadb_galera_cluster;wsrep_provider=/usr/lib/galera/libgalera_smm.so(不同 Linux 发行版路径可能为 /usr/lib64/…);wsrep_cluster_address=“gcomm://node1,node2,node3”;wsrep_sst_method=rsync;wsrep_sla ve_threads(建议根据 CPU 核心数进行调优)。
- 关键参数示例:
- 初始化与启动
- 首次引导时仅需在一个节点执行:systemctl stop mariadb;galera_new_cluster。
- 其余节点执行:systemctl start mariadb。
- 完成安全初始化:运行 mysql_secure_installation;创建用于 SST 的账号(如 sst_user)并授予必要权限。
- 验证
- 可在任意节点执行:SHOW STATUS LIKE ‘wsrep%’; 检查 wsrep_cluster_size=3、wsrep_ready=ON、wsrep_local_state_comment=Synced 等关键状态指标,确认 MariaDB Galera 集群运行正常。
三 主从复制部署步骤
- 适用场景:适合读写分离、读性能扩展以及对强一致性要求不高的业务系统。
- 基本流程
- 准备主从节点并安装 MariaDB;在主库开启二进制日志并创建复制账号;从库配置主库连接信息后启动复制;最后验证复制状态与延迟情况。
- 更详细的操作步骤和参数示例,可参考 CentOS 8 下的 MariaDB 主从复制部署实践,通常包含防火墙设置、初始化、主从参数配置以及复制验证等内容。
四 常见问题与恢复
- 全部节点宕机后的恢复
- 应选择数据最新的节点作为引导节点:systemctl stop mariadb;galera_new_cluster;然后在其余节点执行:systemctl start mariadb。
- SELinux 与防火墙
- 测试环境中可临时执行:setenforce 0;生产环境下更建议按需配置 SELinux 策略,并在防火墙中放行 3306/4567/4568/4444 等必要端口。
- SST 失败排查
- 当确认 wsrep_sst_method=rsync 时,应先检查 rsync 是否可用,同时排查网络连通性与权限设置;如有需要,也可切换到其他 SST 方法(例如 mysqldump)。
