• Galera Cluster For Mysql介绍

    GALERA CLUSTER FOR MYSQL

     

    Galera是一个MySQL(也支持MariaDB,Percona)的同步多主集群软件,目前只支持InnoDB引擎。Galera集群的复制功能是基于Galera library 实现,而为了使mysql 与 Galera library 通讯,针对mysql开发了 wsrep API 。

     

     

    1.wsrep API (WriteSet Replication)

    定义了一系列应用的调和与复制调用库。实现事物数据库同步 writeset (写集),目的在于从应用细节上实现抽象的,隔离的复制。通俗的讲,如果mysql被客户端写入了数据,wsrep就会填充写集 给 Galera library ;而同步时则从 Galera library 接受写集并应用。

     

     

    2.GTID (Global Transaction ID)

    Wsrep描述了怎么复制与同步。而GTID 来确保集群中所有的节点通过同步复制具有相同的状态并以相同的顺序应用这些状态。以相同的顺序,不间断的处理sql语句,以保持数据的一致性。

    GTID是MySQL 5.6复制的一个新特性,(我们这里装的版本是mysql-wsrep-client-5.6-5.6.23-25.10.el6.x86_64),GTID实际上是由UUID+TID组成的。其中UUID是一个MySQL实例的唯一标识。TID代表了该实例上已经提交的事务数量,并且随着事务提交单调递增。

    作用:

    根据GTID可以知道事务最初是在哪个实例上提交的

    GTID的存在方便了Replication的Failover

    虽然Galera Cluster里没有讲到 binlog,其实mysql-5.6之后每一个二进制日志当中在每一个事物的首部都会写上gtid 标记,因此gtid使得追踪和比较复制事物变得非常简单而且能够实现从崩溃中快速恢复。也可以看成GTID代替了传统的binlog 用于同步。有了GTID后,每个事物中都有相关事物的信息,实现服务器之间自动发现各自在对方上缺少什么不需要再进行手动指定位置,指定文件。

    3.Galera

    Galera 是wsrep的提供者,实现多主同步复制。集群建立在专有的通讯系统层上,同步统一数据传输和集群成员服务。还提供多个来源的消息总序,建立多主集群GTID顺序。

    Galera支持多主操作,在这个意义上,所有节点可以同时更改同一个表,并能仍然保持一致性。Galera通过认证算法来检测冲突和回滚事务。

    为了避免脑裂情况的发生,推荐集群节点最少为3.

     

    4.同步与恢复

    主节点与备主节点间使用Galera进行同步复制。Galera是MySQL innodb引擎的同步复制技术。它以wsrep API与innodb引擎直接交互。它确保集群中任何一个提交成功的事务都已经应用到了集群中所有的节点。

    当集群中的某个节点脱离集群(节点故障或网络断开),Galera会自动判定停止该节点的对外服务,以确保数据的一致性。

    当一个新的节点或故障节点加入集群时,Galera会比较加入节点的GTID与集群节点组的GTID。如果不一致,Galera 会将一个节点设置成参考节点,这个节点不执行任何客户端的请求。在生产环境中,可以设立一个专用的参考节点。参考节点向新加入集群的节点进行数据同步。同步过程中新加入的节点无法对外提供服务,直到同步完成。

     

    数据同步过程中新加入节点或提供数据同步的节点都不影响数据一致性。同步过程中新加入节点的GTID随数据同步而更新,如果同步中断,下一次同步时会接着上一次同步到的GTID继续同步。

    参考:http://www.ttlsa.com/mysql/mysqlgalera-multi-master/

    http://www.360doc.com/content/13/0817/15/834950_307820923.shtml

    http://m.blog.csdn.net/blog/gao1738/42839737

     

发表评论

邮箱地址不会被公开。 必填项已用*标注