
如果英文不好的话,可以参考 searchdoc 翻译的中文版本
http://www.searchdoc.cn/rdbms/mysql/dev.mysql.com/doc/refman/5.7/en/index.com.coder114.cn.html

要掌握高可用架构,必须先了解主从架构: MySQL-主从架构探索
通过尽量缩短因日常维护操作(计划内) 和 突发的系统崩溃 (非计划)所导致的停机时间,以提高系统的可用性,这就是高可用 。
举个例子: 主从同步延时太厉害、主从中断、锁表造成大量的阻塞 等等因素都造成了应用的不可用,这些都是影响高可用的因素
其实真正做到100%的可用还是比较困难的,我们经常说到的 5个9 (99.999%)的可用 是啥意思呢?
做到 5个9的可用性,那允许停服多长时间呢? 我们来算下
(365 * 24 * 60) * (1 - 0.99999) = 5.256 分钟, 一年停服时长小于5分钟。
4个9呢?
(365 * 24 * 60) * (1 - 0.9999) = 52. 56 分钟 (1个小时左右)
3个9呢?
(365 * 24 * 60) * (1 - 0.999) = 525.6 分钟 (9个小时左右)
可用性越高,实现的成本相对就高, 实际情况根据我们的业务和项目成本来考量。
1. 避免存在单点故障2. 主从切换及故障转移这里我们主要如何解决探讨MySQL的单点故障

共享存储 也有单点问题,而且共享存储的随机I/O不是很理想,虽然能实现,但不是一种好的解决MySQL单点故障的方案。

提供远程镜像磁盘,数据是由冗余的,没有单点问题,但成本较高 。

集群中的节点全部提交才提交。集群的性能取决于集群中机器配置最低的那台主机的性能。
写入性能比单节点的写入性能差, 而且 PXC仅支持Innodb储存引擎。
这个玩意很强大,需要深入学习,淘宝等很多大厂有基于这个的定制,很好用,但得学会 。
这玩意所有的数据存在内存中,如果内存不足,NDB集群的性能就会非常差。 很少在生产环境中使用。
说到使用MySQL主从复制来解决MySQL的单点问题,其核心在于如何解决主节点的单点问题。
要保证主节点高可用,有几点 需要解决
通常都会使用第三方的复制管理组件 , 主流的MMM 和 MHA ,接下来我们就重点来看下这两种复制管理组件。
学习这个之前,需要知道,这个玩意很少有人用了,这个项目好多年都不维护了,了解即可。 有精力可以重点掌握MHA这种架构。
多主复制器, perl语言开发的
监控和管理MySQL的主主复制拓扑,并在当前的主服务器失效的时候,进行主和主备服务器之间的主从切换和故障转移。
主主复制 分为两种模式
MMM是 主动-被动模式的主主复制的模式
这里的内容就比较多了: 比如如何找到从库对应的新主库日之巅的日志同步点, 如何存在多个从库出现数据不一致的情况如何处理 —> MMM采取的方案: 找到当前主库的同步点进行同步,所以有数据丢失的可能。

因为同一时间点只能有一个主节点提供读写服务,所以第二个主节点画成了虚线。
MMM监控各个服务器的状态,需要在每台服务器上安装 监控服务器。

这一部分暂时留空,因为MMM架构使用较少,暂不整理。
优点 :
缺点 :
同MMM一样, 也是perl语言开发

当主节点发生故障时,会在从节点中选举出一个主节点,继续提供服务。 切高效的完成主从切换,尽最大可能保证数据一致。
MHA支持 基于GTID的复制 ,GTID复制更安全。
MMM不支持 基于GTID的复制
MHA可以和半同步结合起来使用。
基于以下架构来演示

篇幅太大,单独补充
优点
缺点