MySQL高可用集群笔记

张开发
2026/4/16 22:58:23 15 分钟阅读

分享文章

MySQL高可用集群笔记
一、核心概念1. 高可用指标RTO (Recovery Time Objective)故障恢复时间核心业务要求30sRPO (Recovery Point Objective)数据丢失量核心业务要求RPO0脑裂网络分区导致多主同时写入数据不一致多数派集群节点数 N/2 确认才能提交事务防脑裂2. 主流方案对比表格方案核心原理一致性切换优缺点适用场景主从 Keepalivedbinlog 异步 / 半同步 VIP弱 / 半强手动 / 脚本简单、成本低切换慢、易丢数据非核心、中小业务MHA主从 自动选主半强秒级切换快停更、SSH 依赖、单点传统主从升级MGR (组复制)Paxos 共识、原生集群强一致 (RPO0)自动秒级官方、自愈、多主仅 InnoDB、大事务敏感金融、核心交易PXC/Galera同步多主、Galera 协议强一致自动多写、无单点仅 InnoDB、性能低多活、高并发读二、主从复制基础高可用1. 核心原理主库写操作 → 记录binlog从库IO 线程拉 binlog → 中继日志 → SQL 线程回放模式异步默认、半同步至少 1 从 ACK 才提交、增强半同步2. 关键配置my.cnf主库 (server-id1)iniserver-id1 log-binmysql-bin binlog_formatROW # 行模式一致性好 gtid_modeON # 全局事务ID切换必备 enforce_gtid_consistencyON binlog_rows_query_log_eventsON sync_binlog1 innodb_flush_log_at_trx_commit1 # 双1安全 # 半同步 plugin-load-addrpl_semi_sync_master.so rpl_semi_sync_master_enabled1 rpl_semi_sync_master_wait_pointAFTER_SYNC rpl_semi_sync_master_timeout1000 # 1s降级异步从库 (server-id2)iniserver-id2 read_only1 super_read_only1 # 8.0 超级只读 relay-logrelay-bin log_slave_updates1 gtid_modeON enforce_gtid_consistencyON # 并行复制 (5.7) slave_parallel_typeLOGICAL_CLOCK slave_parallel_workers8 # CPU核数3. 部署步骤主库创建复制用户sqlCREATE USER repl% IDENTIFIED BY Repl123; GRANT REPLICATION SLAVE ON *.* TO repl%; FLUSH PRIVILEGES;主库备份mysqldump --single-transaction --master-data2从库恢复备份启动复制sqlCHANGE MASTER TO MASTER_HOST192.168.1.10, MASTER_USERrepl, MASTER_PASSWORDRepl123, MASTER_AUTO_POSITION1; # GTID自动定位 START SLAVE;4. 高可用增强Keepalived绑定 VIP主挂则漂移到从监控MHA/Orchestrator 自动切换三、MGR 集群官方首选1. 核心特性单主模式推荐1 主可写多从只读自动选主多主模式所有节点可写冲突检测主键 / 写集Paxos 共识事务需多数派N/2确认自动故障转移30s 内完成RPO0节点数3/5/7奇数防脑裂最大 9 节点2. 核心配置3 节点ini# 通用 server-id101/102/103 gtid_modeON enforce_gtid_consistencyON binlog_formatROW log_slave_updatesON plugin-load-addgroup_replication.so # MGR专属 group_replication_start_on_bootOFF group_replication_bootstrap_groupOFF group_replication_group_nameuuid # 集群UUID group_replication_local_addressip:33061 # 组通信端口 group_replication_group_seedsip1:33061,ip2:33061,ip3:33061 group_replication_ip_whitelist192.168.1.0/24 group_replication_single_primary_modeON # 单主 group_replication_enforce_update_everywhere_checksOFF3. 部署步骤初始化集群引导节点sqlSET GLOBAL group_replication_bootstrap_groupON; START GROUP_REPLICATION; SET GLOBAL group_replication_bootstrap_groupOFF;其他节点加入sqlSTART GROUP_REPLICATION;查看状态sqlSELECT * FROM performance_schema.replication_group_members;4. 故障切换流程心跳超时 → 标记主节点UNREACHABLE多数派投票 → 按GTID 进度 权重选新主新主关闭super_read_only原主恢复 → 自动加入为从四、MHA 方案经典1. 架构Manager独立节点监控、选主、切换Node每台 MySQL执行日志补全、切换依赖SSH 免密、GTID2. 核心优势切换快30s、数据补偿、支持多从兼容所有存储引擎3. 局限2018 年后停更、Manager 单点、SSH 安全风险五、生产最佳实践1. 方案选型中小业务 / 非核心主从 Keepalived核心 / 金融MGR 单主3 节点多写 / 多活PXC 或 MGR 多主谨慎2. 关键配置强一致MGR、半同步、双 1sync_binlog1、innodb_flush_log_at_trx_commit1防脑裂奇数节点、多数派、网络冗余性能并行复制、大内存、SSD、分库分表3. 监控与运维监控MGR 状态、复制延迟、节点存活、VIP工具PrometheusGrafana、Orchestrator、MHA备份每日全备 实时 binlog 备份4. 故障处理MGR 单主自动切换无需人工主从MHA 自动切换或手动提升从库脑裂切断网络、修复后重新加入集群六、常见问题MGR 大事务延迟→ 拆分事务、控制单事务大小主从延迟→ 并行复制、ROW 模式、优化从库脑裂→ 网络稳定、奇数节点、关闭自动重连数据不一致→ 强一致方案、定期校验pt-table-checksum

更多文章