Linux基础学习(9)Lamp架构(3)
MySQL组复制
基础定义:
MGR 是 MySQL 官方原生高可用集群方案,MySQL5.7.17 正式推出,8.0 持续增强;以插件 group_replication.so 运行,基于Paxos 分布式共识协议。
目标:解决传统主从复制异步丢数据、故障转移依赖外部工具 (MHA)、存在脑裂风险等痛点。
架构特点:
无共享存储(Shared-Nothing),集群每个实例保存完整副本。
对比项 | 传统主从(异步 / 半同步) | MGR 组复制 |
一致性 | 最终一致,极端场景丢数据 | 多数派确认,强一致,防脑裂 |
故障转移 | 需要 MHA/Keepalived 等第三方工具 | 内置自动选主,原生自愈 |
写入模型 | 只能单主写入 | 单主 (推荐)/ 多主两种模式 |
冲突处理 | 无冲突检测,容易主从不一致 | 内置 write set 冲突检测 |
节点规模 | 一主多从,无投票机制 | 推荐 3/5 奇数节点,依赖多数派 |
运维复杂度 | 低 | 较高,网络稳定性要求严格 |
运行模式:
1)单主模式 group_replication_single_primary_mode=ON
集群自动选举唯一 Primary 主节点,只允许主节点写入;其余节点自动设为只读
主宕机 → 集群自动投票选出新主,自动故障转移,无需人工干预
几乎无事务冲突,运维简单,绝大多数业务使用
2)多主模式 group_replication_single_primary_mode=OFF
所有节点都可以接收写请求
并发修改同一行数据会触发事务冲突回滚;业务必须适配冲突重试逻辑
适合多地域分布式写入场景
核心工作原理:
1.事务广播
节点执行 RW 事务,准备提交前,把写入集合 (write set)广播到集群所有成员。
只读事务无需广播、直接提交。
2.多数派确认(Quorum 核心!)
事务必须获得集群半数以上节点 ACK 确认,才能允许提交。
容错公式:集群节点数量建议奇数(3、5 节点)
节点集群:最多容忍 1 台故障;5 节点最多容忍 2 台故障
如果故障节点超过半数 → 无法达成共识,集群全部只读,防止脑裂。
3.冲突认证机制
所有节点收到事务广播后对比 write set;
无冲突:事务应用执行
存在行冲突:后发起的事务直接回滚
4.成员视图自动管理
内置故障检测,节点掉线、宕机、新节点加入,集群自动更新成员视图
流程:多主模式
首先对server1server2server3的mysql数据库进行初始化
Server1:
停止mysql服务清理数据然后进入启动文件
进入mysql修改密码并添加更改属性
退出MySQL数据库然后再次更改主配置文件并进入mysql添加命令
可以查看本组的工作状态,显示server1 online
Server2:
清除之前的数据并更改配置文件
在对server2的mysql进行初始化
再次修改配置文件
对mysql添加命令
可以查看本组的工作状态,显示server1 online server2 online
Server3:
类似server2 只是改id=3 修改本机地址
