Linux MariaDB集群部署方案
Linux环境下MariaDB集群部署方案(以Galera Cluster为例)
一、方案概述
MariaDB Galera Cluster是多主同步复制集群解决方案,支持数据强一致性、高可用性和横向扩展,适用于需要高并发读写、零数据丢失的场景。其核心特点包括:同步复制(所有节点数据实时一致)、多主写入(任意节点均可执行写操作)、自动故障转移(节点宕机后自动剔除,剩余节点继续提供服务)。
二、前置准备
-
环境要求
- 至少3台Linux服务器(推荐Ubuntu 22.04+/CentOS 8+),配置静态IP地址;
- 所有节点之间SSH免密互访(通过
ssh-keygen
和ssh-copy-id
配置); - 网络延迟≤10ms(同步复制对网络要求高,建议部署在同一机房或云服务商同一可用区)。
-
软件要求
- MariaDB版本≥10.1(支持Galera插件);
- Galera Provider库(如
mariadb-galera-cluster
,部分发行版需单独安装)。
三、详细部署步骤
1. 安装MariaDB与Galera组件
在所有节点上执行以下命令,安装MariaDB及Galera集群组件:
# Ubuntu/Debian示例
sudo apt update &
&
sudo apt install -y mariadb-server mariadb-client mariadb-galera-cluster rsync
# CentOS/RHEL示例
sudo yum install -y mariadb-server mariadb galera
安装完成后,MariaDB服务会自动启动,初始状态为单机模式。
2. 配置MariaDB集群参数
编辑每个节点的MariaDB配置文件(路径因发行版而异,常见为/etc/mysql/mariadb.conf.d/50-server.cnf
或/etc/my.cnf.d/server.cnf
),在[mysqld]
section添加以下配置:
[mysqld]
# 基础配置
bind-address = 0.0.0.0 # 允许远程访问
default-storage-engine= InnoDB # 必须使用InnoDB引擎(Galera仅支持InnoDB)
innodb_autoinc_lock_mode= 2 # 自增锁模式(同步复制要求)
binlog_format = ROW # 二进制日志格式(同步复制要求)
# Galera集群配置
wsrep_on = ON # 开启Galera功能
wsrep_provider = /usr/lib/galera/libgalera_smm.so # Galera provider库路径(Ubuntu/Debian)
# wsrep_provider = /usr/lib64/galera/libgalera_smm.so # CentOS/RHEL路径
wsrep_cluster_name = my_galera_cluster # 集群名称(所有节点必须一致)
wsrep_cluster_address = gcomm://node1_ip,node2_ip,node3_ip # 初始集群地址(首次初始化为空)
wsrep_node_address = node_current_ip # 当前节点IP地址
wsrep_node_name = node1 # 当前节点名称(需唯一,如node1/node2/node3)
wsrep_sst_method = xtrabackup-v2 # 数据同步方法(推荐xtrabackup,性能更好)
wsrep_sst_auth = sstuser:sstpassword # SST用户及密码(用于数据同步认证)
注意:wsrep_cluster_address
在首次初始化集群时需设置为gcomm://
(空值),后续加入节点时再填写完整节点列表。
3. 初始化集群(第一个节点)
在第一个节点上执行以下命令,创建Galera集群:
# 登录MariaDB并创建SST用户(用于数据同步)
mysql -u root -p -e "
CREATE USER 'sstuser'@'%' IDENTIFIED BY 'sstpassword';
GRANT ALL PRIVILEGES ON *.* TO 'sstuser'@'%';
FLUSH PRIVILEGES;
"
# 初始化集群(启动第一个节点)
sudo galera_new_cluster
说明:galera_new_cluster
命令会启动集群并生成集群UUID,后续节点需通过该UUID加入集群。
4. 加入其他节点
在第二个及后续节点上,修改配置文件中的wsrep_cluster_address
为完整节点列表(如gcomm://node1_ip,node2_ip,node3_ip
),然后重启MariaDB服务:
# 修改配置文件中的wsrep_cluster_address(如上述配置)
sudo systemctl restart mariadb
节点重启后,会自动连接到集群并同步数据。
5. 验证集群状态
在任意节点上登录MariaDB,执行以下命令检查集群状态:
SHOW STATUS LIKE 'wsrep%';
重点关注以下指标:
wsrep_cluster_size
:集群节点数量(应等于已加入节点的总数);wsrep_ready
:集群是否就绪(值为ON
表示正常);wsrep_connected
:节点是否连接到集群(值为ON
表示正常)。
四、可选优化与扩展
1. 配置负载均衡(HAProxy)
为提升集群的读性能和可用性,可通过HAProxy实现负载均衡,将请求分发到多个MariaDB节点:
# 安装HAProxy
sudo apt install -y haproxy # Ubuntu/Debian
sudo yum install -y haproxy # CentOS/RHEL
# 配置HAProxy(编辑/etc/haproxy/haproxy.cfg)
frontend mysql_front
bind 192.168.1.100:3306 # HAProxy监听IP(虚拟VIP)
default_backend mysql_back
backend mysql_back
balance roundrobin # 轮询算法
server node1 192.168.1.11:3306 check port 9200 inter 2000 rise 2 fall 3
server node2 192.168.1.12:3306 check port 9200 inter 2000 rise 2 fall 3
server node3 192.168.1.13:3306 check port 9200 inter 2000 rise 2 fall 3
# 重启HAProxy
sudo systemctl restart haproxy
说明:balance roundrobin
表示轮询分发请求,check
表示健康检查(端口9200为MariaDB的status
端口,需在MariaDB配置中开启)。
2. 监控集群状态
通过Prometheus
+Granafa
或Zabbix
搭建监控系统,监控以下指标:
- 节点状态(
wsrep_ready
、wsrep_connected
); - 集群大小(
wsrep_cluster_size
); - 复制延迟(
wsrep_local_recv_queue_len
); - 磁盘IO、CPU利用率等系统指标。
3. 数据备份策略
即使Galera Cluster支持同步复制,仍需定期备份数据,推荐使用mariabackup
(MariaDB官方备份工具):
# 安装mariabackup
sudo apt install -y mariadb-backup # Ubuntu/Debian
sudo yum install -y mariadb-backup # CentOS/RHEL
# 全量备份(示例)
sudo mariabackup --user=root --password=your_password --backup --target-dir=/backup/full
# 恢复备份(示例)
sudo mariabackup --user=root --password=your_password --prepare --target-dir=/backup/full
sudo mariabackup --user=root --password=your_password --copy-back --target-dir=/backup/full
五、注意事项
- 网络稳定性:Galera Cluster对网络延迟和丢包率敏感,建议使用专线或高质量云网络;
- 节点数量:生产环境建议至少部署3个节点(奇数节点可避免脑裂);
- 数据一致性:同步复制会降低写性能,需根据业务需求调整
innodb_flush_log_at_trx_commit
(如设为2可提升性能,但会牺牲部分持久性); - 版本兼容性:所有节点需使用相同版本的MariaDB和Galera Provider,避免兼容性问题。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux MariaDB集群部署方案
本文地址: https://pptw.com/jishu/722501.html