MySQL 主从
    为了保证数据库的高可用,为了保证性能的扩展,绝大部分公司又会使用主从同步,读写分离的MySQL集群架构。
    MySQL主从之外——Galera - 图1
    传统的主从同步,读写分离MySQL集群架构如上图所示:
    (1)主库:左侧第一个实例,提供写服务的实例;
    (2)从库:右侧两个实例,提供读服务的实例;
    此时数据复制是如何实现的呢?
    仍如上图所示:
    (1)客户端将写操作提交给主库;
    (2)Replication:主库将操作序列化,通过binlog的方式传输给从库;
    (3)从库执行相同序列的操作,以实现副本冗余;
    传统的主从同步,读写分离冗余模式,数据库集群存在什么问题呢?
    (1)用户要关注集群细节,实施读写分离;
    (2)写库仍是单点,性能无法线性扩充;
    (3)读库有延时,数据不一致;
    (4)写库挂了,从库顶上,可能出现数据丢失;
    (5)如果引入中间件,SQL能力会受影响;
    (6)运维复杂性;
    (7)…
    既然这么多痛点,有没有一项技术,能够解决大家的问题呢?
    Galera集群(Galera Cluster)孕育而生。
    什么是Galera集群?
    Galera集群是一个基于MySQL InnoDB同步复制的:
    (1)同步;
    (2)多主;
    (3)数据库集群;
    画外音:它能支持例如MariaDB等其他数据库,这里重点讲MySQL。
    MySQL主从之外——Galera - 图2
    如上图所示:
    (1)Galera集群由一组MySQL集群组成;
    (2)Replication:这一组MySQL服务器使用复制插件来管理数据库复制;
    (3)客户端可以读写集群中的任何一个节点;
    Galera集群官网号称,它及其流弊:
    (1)真正的多主(True Multi_Master),任何数据修改会被复制到其他节点;
    (2)没有所谓的从库延时(slave lag),同步复制;
    (3)强一致性,所有节点处于一致的状态;
    (4)热备,高可用,不需要处理所谓的主从故障转移,也不需要虚IP;
    (5)无需读写分离,随时可以读写任何节点;
    (6)支持InnoDB
    (7)对应用程序透明
    (8)…
    总之,在官网的描述中,Galera集群是一个高可用的,高性能的,能保证数据一致性与完整性的:
    (1)针对MySQL的
    (2)基于同步认证的(synchronous certification-based);
    (3)多副本(replication);
    解决方案。