Galera Cluster是MariaDB企业级高可用方案的核心组件,采用多主架构设计。与传统的MySQL主从复制相比,其核心技术特点包括:
我在生产环境部署过多个版本的Galera集群,实测10.6版本在以下方面有显著改进:
根据集群规模的不同,硬件配置应做相应调整。以下是我的经验配置表:
| 节点数量 | CPU核心 | 内存 | 磁盘类型 | 网络带宽 |
|---|---|---|---|---|
| 3-5 | 8核 | 16GB | SSD RAID10 | 10Gbps |
| 5-10 | 16核 | 32GB | NVMe | 25Gbps |
| 10+ | 32核 | 64GB+ | NVMe阵列 | 40Gbps |
重要提示:所有节点硬件配置应保持一致,特别是CPU架构和内存容量,否则可能导致性能瓶颈。
部署前需对Linux系统进行针对性调优:
bash复制# 关闭透明大页(THP)
echo never > /sys/kernel/mm/transparent_hugepage/enabled
# 调整内核参数
cat >> /etc/sysctl.conf <<EOF
net.ipv4.tcp_fin_timeout = 30
net.core.somaxconn = 32768
vm.swappiness = 10
EOF
# 设置正确的时区
timedatectl set-timezone Asia/Shanghai
这些优化措施能显著提升数据库性能,特别是在高并发场景下。我在某次部署中忽略THP设置,导致集群性能下降约30%。
推荐使用官方仓库安装最新稳定版:
bash复制# 添加MariaDB仓库
curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
# 安装Galera组件
sudo apt-get install mariadb-server galera-4 mariadb-client libmariadb3
安装完成后需特别注意:
/etc/mysql/conf.d/galera.cnf 是核心配置文件,关键参数说明:
ini复制[mysqld]
binlog_format=ROW
default-storage-engine=InnoDB
innodb_autoinc_lock_mode=2
innodb_flush_log_at_trx_commit=0
[galera]
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_cluster_address="gcomm://node1_ip,node2_ip,node3_ip"
wsrep_cluster_name='production_cluster'
wsrep_node_address='current_node_ip'
wsrep_node_name='node1'
wsrep_sst_method=mariabackup
wsrep_sst_auth="sst_user:password"
参数调优经验:
bash复制# 在首个节点执行
sudo systemctl stop mysql
sudo galera_new_cluster
关键检查点:
bash复制# 在其他节点执行
sudo systemctl start mysql
加入节点时的常见问题处理:
必须监控的核心指标:
| 指标名称 | 正常范围 | 报警阈值 |
|---|---|---|
| wsrep_flow_control_paused | 0-0.1 | >0.5持续1m |
| wsrep_local_recv_queue | <10 | >50 |
| wsrep_cluster_size | =预期节点数 | 任何减少 |
| wsrep_ready | ON | OFF |
推荐使用Prometheus+Granfa搭建监控系统,配置告警规则。
Galera集群需要特殊的备份方案:
bash复制# 使用mariabackup进行热备
mariabackup --backup --target-dir=/backups/$(date +%F) \
--user=backup_user --password=secret
# 准备备份
mariabackup --prepare --target-dir=/backups/2023-06-15
# 恢复流程
systemctl stop mysql
rm -rf /var/lib/mysql/*
mariabackup --copy-back --target-dir=/backups/2023-06-15
chown -R mysql:mysql /var/lib/mysql
systemctl start mysql
问题1:节点无法加入集群
排查步骤:
问题2:集群脑裂(split-brain)
应急处理:
某次性能调优案例:将wsrep_slave_threads从4调整为16后,写入吞吐量提升3倍。
10.6版本升级的特殊要求:
升级操作步骤:
bash复制# 逐个节点执行
sudo systemctl stop mysql
sudo apt-get upgrade mariadb-server galera-4
sudo systemctl start mysql
升级后验证: