mysql高可用概述
高可用方案概述
- MGR(MySQL Group Replication)是 2016年12月 MySQL 5.7.17 引进的一个数据库高可用架构,它基于原生复制技术及分布式paxos协议的原子广播机制,确保事务在所有节点要么全部提交,要么都不提交,提供数据强一致性。
| 方案 | 安全性 | 性能 | 最少节点 | 切换方式 | 备注 |
|---|---|---|---|---|---|
| MMM | 异步复制,不安全 容易数据丢失或错误 |
性能最好 不受主从影响 |
2个 若扩展则无优势 |
vip,不靠谱 容易双写错乱 |
异步复制是最不可靠的架构 网络抖动就会导致不一致问题 |
| MHA | 异步复制,不安全 容易数据丢失或错误 |
比MMM稍差 受主从影响 |
2个 若扩展则无优势 |
vip,不靠谱 | 若延迟过大,强半同步会退化为异步复制 不支持双写,单点写入有风险 |
| PXC | 同步复制,安全可靠 不会丢失数据或错误 |
比MHA稍差 能满足大多数场景 |
3个 天生分布式 |
- | 数据强一致,支持多写 维护不影响业务,无感知 |
| MGR | 分布式paxos协议 数据强一致性 |
原生集群 自动且快速 |
3个 节点弹性调整 |
无vip,仲裁选举 | 支持多写 节点的新增和移除都是自动的 |
- MySQL 的高可用方案首推 MGR,搭建MGR需要注意如下:
存储引擎必须是Innodb,并且每张表一定要有主键,在进行事务冲突检测时需要利用主键值对比
必须开启GTID,且主从状态信息存于表中,binlog日志格式必须设置为ROW
目前一个MGR集群组最多9个节点,超过9台无法加入集群
多主模式不支持外键和SERIALIZABLE事务隔离级别,单主模式支持外键
新主选举时,权重越大(默认50)则优先级越高,若权重相等则版本越低的节点优先级越高,若权重相等、版本相同则server_uuid排序越靠前的节点优先级越高
- mysql主从及mgr的工作原理示意图
