往期专题请查看www.zhaibibei.cn
这是一个坚持Oracle,Python,MySQL原创内容的公众号
前期回顾
MySQL Galera Clusters全解析 Part 1 Galera Cluster 简介
上节我们简单介绍了Galera Cluster,说到Galera Cluster 中各节点的事务同步是通过基于认证的复制进行的,这节详细说明下
基于认证的复制使用组通信(Group Communication) 和事务排序技术( transaction ordering techniques)来实现数据库的同步复制
1. 基于认证复制的要求
我们并不能在所有MySQL数据库中部署Galera Cluster,他需要如下要求
Transactional Database
数据库必须支持事务,特指可以回滚未提交的变更
Atomic Changes
原子性,被复制的事务必须全部完成或全部不成功
Global Ordering
Galera Cluster中所有节点的事务必须被全局的排序,即以相同的顺序在所有节点执行
2. 基于认证复制工作流程
基于认证的复制的主要思想是,只要没有冲突,事务就会按正常执行,直到达到提交点。这称为乐观执行

首先当一个客户端在一个节点执行commit命令,在实际提交之前,将更改数据库的事务和变更的主键信息结合成写集(write-set),之后数据库将写集发送到其他节点
之后使用主键对写集进行一次确定性的认证测试(deterministic certification test),这个测试在每一个节点中执行,包括生成该写集的节点,该测试将决定节点是否可以应用写集
如果测试失败,则节点会丢弃该写集并回滚原始的事务,如果测试成功,则事务完成commit并且其他节点也会应用写集
3. 基于认证的复制在Galera中的应用
上面我们说了基于认证的复制的原理,下面来说下其是如何在Galera中工作的
在Galera中基于认证的复制依赖于事务的全局排序(global ordering of transaction)
Galera给集群中每个事务分配一个全局的顺序数,也叫做seqno,类似于Oracle的序列,自增的
当一个事务开始提交,节点会将该事务的seqno和上次成功的事务的seqno做比较
这两个seqno之间的所有事务会进行主键冲突检测,如果有冲突则认证失败
这个过程是确定的而且所有事务按照相同的顺序接收,所有节点达到一致时,原始节点会通知客户端程序该事务是否被提交成功
4. 参考资料
https://galeracluster.com/library/documentation/certification-based-replication.html
点击阅读原文获得更好的阅读体验,推荐在PC端阅读
也可在公众号内的站内搜索 Galera 搜索相关内容
或直接打开个人网页搜索
http://www.zhaibibei.cn
往期专题包括:
Python 自动化运维
打造属于自己的监控系统
Python爬虫基础
Oracle awr报告全解析
Oracle ASM全解析
Oracle Data Guard全解析
Oracle ClusterWare全解析
Oracle常见参数解析
Oracle常见故障处理
Oracle SQL优化案例

觉得文章不错的欢迎转发,收藏~




