简介

主从或主主半同步复制

常见架构如下

常见的Mysql十款高可用方案-LMLPHP

优点
/*
		1. 架构比较简单, 使用原生半同步复制作为数据同步的依据;
		2. 双节点, 没有主机宕机后的选主问题,直接切换即可;
		3. 双节点,需求资源少,部署简单;
*/
缺点
/*
		1. 完全依赖于半同步复制,如果半同步复制退化为异步复制,数据一致性无法得到保证.
		2. 需要额外考虑haproxy,keepalived的高可用机制.
*/

半同步复制优化

双通道复制

常见的Mysql十款高可用方案-LMLPHP

binlog文件服务器

常见的Mysql十款高可用方案-LMLPHP

优点
/*
		1. 双节点,需求资源少,部署简单
		2. 架构简单,没有选主的问题,直接切换即可
		3. 相对于原生复制,优化后的半同步复制更能保证数据的一致性.
*/
缺点
/*
		1. 需要修改内核源码或者使用mysql通信协议,需要对源码有一定的了解,并能做一定程度上的二次开发.
		2. 依旧依赖于半同步复制,没有从根本上解决数据一致性问题.
*/

高可用架构优化

MHA+多节点集群

常见的Mysql十款高可用方案-LMLPHP

MHA也可以扩展到如下的多节点集群

常见的Mysql十款高可用方案-LMLPHP

优点
/*
		1. 可以进行故障的自动检测和转移
		2. 可扩展性较好,可以根据需要扩展MySQL的节点数量和结构.
		3. 相对于双节点的MySQL复制,三节点/多节点的MySQL发生不可用的概率更低.
*/
缺点
/*
		1. 至少需要三节点,相对于双节点需要更多的资源.
		2. 逻辑较为复杂,发生故障后排查问题,定位问题更加困难.
		3. 数据一致性仍然靠原生半同步复制保证,仍然存在数据不一致的风险.
		4. 可能因为网络分区发生脑裂现象.
*/

Zookeeper+Proxy

常见的Mysql十款高可用方案-LMLPHP

优点
/*
		1. 较好的保证了整个系统的高可用性,包括proxy,MySQL.
		2. 扩展性较好,可以扩展为大规模集群内
*/
缺点
/*
		1. 数据一致性仍然依赖于原生的Mysql半同步复制.
		2. 引入zk, 整个系统的逻辑变的更加复杂.
*/

共享存储之SAN共享存储

SAN共享存储

常见的Mysql十款高可用方案-LMLPHP

优点
/*
		1. 两节点即可,部署简单,切换逻辑简单;
		2. 很好的保证数据的强一致性;
		3. 不会因为MySQL的逻辑错误发生数据不一致的问题;
*/
缺点
/*
		1. 需要考虑共享存储的高可用;
		2. 价格昂贵;
*/

DRBD磁盘复制

常见的Mysql十款高可用方案-LMLPHP

优点
/*
		1. 两节点即可,部署简单,切换逻辑简单;
		2. 相比于SAN存储网络,价格低廉;
		3. 保证数据的强一致性;
*/
缺点
/*
		1. 对IO性能影响较大
		2. 从库不能提供读操作
*/

MySQL Cluster

常见的Mysql十款高可用方案-LMLPHP

优点
/*
		1. 全部使用官方组件,不依赖第三方软件
		2. 可以实现数据的强一致性
*/
缺点
/*
		1. 国内使用的较少;
		2. 配置较复杂,需要使用NDB存储引擎,与MySQL常规引擎存在一定差异;
		3. 至少三节点;
*/

Galera

常见的Mysql十款高可用方案-LMLPHP

优点
/*
		1. 多主写入,无延迟复制,能保证数据强一致性;
		2. 有成熟的社区,有互联网公司在大规模的使用;
		3. 自动故障转移,自动添加,剔除节点;
*/
缺点
/*
		1. 需要为原生MySQL节点打wsrep补丁;
		2. 只支持innodb存储引擎;
		3. 至少三节点;
*/

Proxs

常见的Mysql十款高可用方案-LMLPHP

优点
/*
		1. 多主写入,无延迟复制,能保证数据的强一致性;
		2. 有成熟理论基础;
		3. 自动故障转移,自动添加,剔除节点;
*/
缺点
/*
		1. 只支持innodb存储引擎;
		2. 至少三节点;
*/

小结

文章绝大多数来自

https://zhuanlan.zhihu.com/p/25960208

10-13 05:16
查看更多