关系型数据库MySQL(五):Galara高可用

张开发
2026/4/17 5:44:39 15 分钟阅读

分享文章

关系型数据库MySQL(五):Galara高可用
数据库高可用一、Galera 高可用理论基础1.1 什么是高可用高可用High Availability, HA指系统能够持续提供服务的能力目标是最小化停机时间。在数据库领域高可用通常通过冗余节点和故障自动转移实现。1.2 Galera Cluster 简介Galera Cluster 是一个基于 MySQL 的多主同步复制集群具有以下特点多主架构所有节点均可读写。强一致性通过组通信Group Communication实现事务同步。自动故障转移节点故障时自动重新选举。无单点故障所有节点地位平等。1.3 复制模式对比复制类型同步方式一致性保障性能影响适用场景异步复制主节点异步推送弱低跨地域备份半同步复制主节点等待从节点中等中金融交易组复制Galera事务组提交强中高高并发多活业务二、Galera 核心原理2.1 组通信协议Galera 使用组通信系统GCS实现节点间消息传递常用协议包括gcommGalera 自带的轻量级通信层。Corosync成熟的集群通信框架。2.2 事务认证复制每个事务在提交前需经过集群认证节点 A 发起事务。事务写入集WriteSet广播至所有节点。节点投票是否允许提交。多数节点同意后事务在所有节点提交。2.3 SST 与 ISTSSTState Snapshot Transfer全量数据同步用于新节点加入。ISTIncremental State Transfer增量同步用于落后节点追数据。三、OpenEuler 环境部署 Galera 集群3.1 环境准备操作系统OpenEuler 22.03 LTS节点规划Node1: 192.168.1.101Node2: 192.168.1.102Node3: 192.168.1.103软件依赖sudo dnf install mariadb-server-galera rsync socat3.2 配置文件详解编辑/etc/my.cnf.d/galera.cnf[mysqld] binlog_formatROW default_storage_engineInnoDB innodb_autoinc_lock_mode2 wsrep_onON wsrep_provider/usr/lib64/galera/libgalera_smm.so wsrep_cluster_addressgcomm://192.168.1.101,192.168.1.102,192.168.1.103 wsrep_cluster_namegalera_cluster wsrep_node_address192.168.1.101 # 当前节点IP wsrep_node_namenode1 # 节点名称 wsrep_sst_methodrsync # 同步方法3.3 启动集群初始化第一个节点sudo galera_new_cluster systemctl start mariadb加入其他节点systemctl start mariadb3.4 验证集群状态SHOW STATUS LIKE wsrep%;关键指标wsrep_cluster_size集群节点数应为3wsrep_local_state_comment状态Synced表示正常四、运维实战案例4.1 节点故障恢复场景Node2 宕机后重新加入。# 在 Node2 上 sudo systemctl restart mariadb观察日志[Note] WSREP: Member 2.0 (node2) requested state transfer from node1 [Note] WSREP: IST receiver started.4.2 数据一致性验证测试步骤在 Node1 创建表CREATE TABLE test (id INT, name VARCHAR(20));在 Node3 插入数据INSERT INTO test VALUES (1, Galera);在 Node2 查询SELECT * FROM test; -- 应返回 (1, Galera)4.3 脑裂Split-Brain处理预防配置wsrep_provider_optionspc.wait_primON; pc.ignore_sbOFF手动恢复关闭所有节点systemctl stop mariadb重新引导集群galera_new_cluster # 在主节点执行五、性能调优与监控5.1 参数优化# 减少网络延迟影响 wsrep_slave_threads8 innodb_flush_log_at_trx_commit2 # 提升 SST 效率 wsrep_sst_methodmariabackup wsrep_sst_authsst_user:password5.2 监控工Prometheus Grafana# prometheus.yml scrape_configs: - job_name: galera static_configs: - targets: [192.168.1.101:9104, 192.168.1.102:9104]关键指标wsrep_flow_control_paused流控暂停时间wsrep_replicated复制事务数六、常见问题排查6.1 节点无法加入集群错误日志[ERROR] WSREP: Failed to read from: ssl://0.0.0.0:4567解决方案检查防火墙sudo firewall-cmd --add-port4567/tcp --permanent验证wsrep_cluster_address配置是否一致。6.2 SST 失败错误信息[ERROR] WSREP: Process completed with error: wsrep_sst_rsync ...处理步骤确保rsync已安装。检查目标节点磁盘空间df -h /var/lib/mysql七、总结Galera Cluster 为 MySQL 提供了强一致性多活架构适合高并发业务场景。在 OpenEuler 系统上需注意依赖包兼容性如mariadb-server-galera。防火墙策略4567、4444端口。定期监控wsrep状态指标。运维口诀配置一致是基础网络畅通是关键监控指标日日看脑裂预防记心间。附录常用命令速查# 查看集群状态 mysql -e SHOW STATUS LIKE wsrep_cluster_size; # 强制移除故障节点 SET GLOBAL wsrep_provider_optionspc.bootstrap1;

更多文章