简介
主从或主主半同步复制
常见架构如下
优点
/*
1. 架构比较简单, 使用原生半同步复制作为数据同步的依据;
2. 双节点, 没有主机宕机后的选主问题,直接切换即可;
3. 双节点,需求资源少,部署简单;
*/
缺点
/*
1. 完全依赖于半同步复制,如果半同步复制退化为异步复制,数据一致性无法得到保证.
2. 需要额外考虑haproxy,keepalived的高可用机制.
*/
半同步复制优化
双通道复制
binlog文件服务器
优点
/*
1. 双节点,需求资源少,部署简单
2. 架构简单,没有选主的问题,直接切换即可
3. 相对于原生复制,优化后的半同步复制更能保证数据的一致性.
*/
缺点
/*
1. 需要修改内核源码或者使用mysql通信协议,需要对源码有一定的了解,并能做一定程度上的二次开发.
2. 依旧依赖于半同步复制,没有从根本上解决数据一致性问题.
*/
高可用架构优化
MHA+多节点集群
MHA也可以扩展到如下的多节点集群
优点
/*
1. 可以进行故障的自动检测和转移
2. 可扩展性较好,可以根据需要扩展MySQL的节点数量和结构.
3. 相对于双节点的MySQL复制,三节点/多节点的MySQL发生不可用的概率更低.
*/
缺点
/*
1. 至少需要三节点,相对于双节点需要更多的资源.
2. 逻辑较为复杂,发生故障后排查问题,定位问题更加困难.
3. 数据一致性仍然靠原生半同步复制保证,仍然存在数据不一致的风险.
4. 可能因为网络分区发生脑裂现象.
*/
Zookeeper+Proxy
优点
/*
1. 较好的保证了整个系统的高可用性,包括proxy,MySQL.
2. 扩展性较好,可以扩展为大规模集群内
*/
缺点
/*
1. 数据一致性仍然依赖于原生的Mysql半同步复制.
2. 引入zk, 整个系统的逻辑变的更加复杂.
*/
共享存储之SAN共享存储
SAN共享存储
优点
/*
1. 两节点即可,部署简单,切换逻辑简单;
2. 很好的保证数据的强一致性;
3. 不会因为MySQL的逻辑错误发生数据不一致的问题;
*/
缺点
/*
1. 需要考虑共享存储的高可用;
2. 价格昂贵;
*/
DRBD磁盘复制
优点
/*
1. 两节点即可,部署简单,切换逻辑简单;
2. 相比于SAN存储网络,价格低廉;
3. 保证数据的强一致性;
*/
缺点
/*
1. 对IO性能影响较大
2. 从库不能提供读操作
*/
MySQL Cluster
优点
/*
1. 全部使用官方组件,不依赖第三方软件
2. 可以实现数据的强一致性
*/
缺点
/*
1. 国内使用的较少;
2. 配置较复杂,需要使用NDB存储引擎,与MySQL常规引擎存在一定差异;
3. 至少三节点;
*/
Galera
优点
/*
1. 多主写入,无延迟复制,能保证数据强一致性;
2. 有成熟的社区,有互联网公司在大规模的使用;
3. 自动故障转移,自动添加,剔除节点;
*/
缺点
/*
1. 需要为原生MySQL节点打wsrep补丁;
2. 只支持innodb存储引擎;
3. 至少三节点;
*/
Proxs
优点
/*
1. 多主写入,无延迟复制,能保证数据的强一致性;
2. 有成熟理论基础;
3. 自动故障转移,自动添加,剔除节点;
*/
缺点
/*
1. 只支持innodb存储引擎;
2. 至少三节点;
*/
小结
文章绝大多数来自