官方集群
(自带的集群性能都很差)
MySQL Replication
如前一篇主从复制的原理
MySQL Fabirc
这是在MySQL Replication的基础上,增加了故障检测与转移,自动数据分片功能。依然是一主多
从的架构,虽然只有一个主节点,当主节点宕机,会从从库中选举一个来当主节点;
这个方案用来实现高可用,但是节点故障恢复时间长达30秒或更长;
MySQL Cluster
MySQL Cluster是多主多从结构;最大不足在于只支持 NDB;
优点:
-
高可用性,自动切分数据,数据在不同节点进行备份;
-
方便数据库的水平拓展;
-
多个主节点,节点故障恢复通常小于1秒。
第三方集群
MMM
在 MySQL Replication 基础上的优化;该项目为 google 开源项目;
是一个双主多从结构,使用 perl 语言来对 MySQL Replication扩展;主要实现了监控 MySQL 主
主复制并做切换转移;
注意:虽然叫双主复制,但是同时刻只允许对一个主进行写入,另外一个主备提供部分读服务;
优点
高可用,3 秒内主备切换;
缺点
-
无法完全保证一致性;双主复制有延时,切换后可能不是最新数据;
-
使用 VIP(虚拟IP浮动) 技术;限定部署必须在同一个 IDC 机房;
MHA
在 MySQL Replication 基础上的优化。
M(master)H(high)A(availability)是多主多从架构;提供更多的主节点,需要使用
keepalived 来实现 VIP;
每一个复制组有主节点,主备节点以及从节点构成;
优点
-
可以进行故障的自动检测和转移;
-
在主库异常宕机时能最大程度保持数据一致性;
缺点
- 还需要引入读写分离相应逻辑,可以考虑 mysql-proxy 做到读的负载均衡
Galera Cluster (MyCat)
由 CoderShip 开发的 MySQL多主结构集群,这些主节点互为其他节点的从节点。
原生的主从复制采用的是异步复制,而 Galera 采用的是多主同步复制,并针对同步复制过程中,
会大概率出现的事务冲突和死锁进行优化;Galera的复制同步不是通过binlog实现,而是重写了
wsrep api;
同步复制过程中,主库的单个事务更新需要在所有从库上同步更新,所以在主库提交事务时,集群
中所有节点的数据保持一致;
优点
-
可对任意节点进行读写操作,某个节点宕机不影响其他节点的读写功能,而且不需要做故障切换;
-
扩展性强,新增节点自动拉取在线节点的数据(新节点加入时,集群会选举一个节点专门为新节点
提供数据),数据同步完成后,新节点才会对外提供服务,不需手动备份恢复;
缺点
- 响应会降低,因为实现了数据的强一致性;