MySQL的高可用架构

MySQL 的高可用性解决方案目前大致分为 5 种,按照高可用的级别(99.9999% 为最高级)排序依次为:(1)主从复制(2)具有自动故障转移功能的主从复制(3)利用共享存储、OS 或虚拟化软件实现主备架构(4)MySQL Group Replication 群组复制(5)MySQL NDB Cluster

  • MySQL Replication:允许数据从一台实例上复制到一台或多台其它的实例上
  • MySQL Group Replication:群组复制提供更好的冗余性、自动恢复以及写入扩展
  • MySQL InnoDB Cluster:基于群组复制,提供了易于管理的 API、应用故障转移和路由、易于配置,提供比群组复制更高级别的可用性
  • MySQL NDB Cluster:容易与 MySQL InnoDB Cluster 混淆,是另外一款产品,提供更高级别的可用性和冗余性。适用于分布式计算环境,使用内存型的 NDB 存储引擎

原理:

  • 经典的主从复制是 MySQL 原生的复制功能,采用异步方式,主服务器执行更改数据的事务后,会产生 binlog,之后 binlog 会被发送到从服务器变成 relay log,与此同时,主服务器会对应用提交返回。从服务器接收到 relay log 后,会通过一个 applier 的线程对日志里面的内容进行施放,使产生的数据更改写入从服务器,之后产生自己的 binlog,进行提交
  • 采用异步的方式,在发生网络问题和服务器损坏的情况下(从服务器未接收到日志,主服务器已经提交,并且提交后主服务器彻底损坏)会丢失数据,为了防止数据丢失,半同步复制在异步的基础上增加了一个日志确认的环节,在从服务器接收到日志后,返回给主服务器一个应答,之后主服务器才能对应用提交返回
  • 作为 MySQL 目前较新的复制方式,群组复制 MGR 可以通过群组内任意服务器对数据进行更新,而不是像前面两种有主从之分。为此群组复制增加了一个验证步骤,通过验证的事务才能进行提交,提交后群组内其它成员同样对日志进行施放,提交