-
1. MySQL Galera Cluster全解析 Part 1 Galera Cluster 简介
tutorial1
-
-
Attachments
-
Changes
-
View Source
-
View
## 前期回顾
这期的专题我们来介绍MySQL Galera Clusters 相关的内容
上个专题我们说了MySQL组复制相关的内容,这节我们说MySQL Galera Clusters ,这个和MGR在某些方面类似,都是实现MySQL高可用的
建议大家在看之前先了解下MGR
[http://www.zhaibibei.cn/mysql/mgr/](http://www.zhaibibei.cn/mysql/mgr/)
这节内容先简单介绍下Galera Cluster
## 1. Galera Cluster介绍
Galera Cluster是一个用于innodb的同步多主复制插件,它不同于传统的MySQL复制,同时也解决了很多多主写入时的冲突问题,用户不需要知道其在哪台服务器上写入以及在哪台服务器上读取
一个应用程序可以在集群中的每个节点写入,事务(基于行的)在一个节点提交也会同步复制到其他节点,通过基于认证(certification-based)的复制来实现实时同步
基于认证的复制使用组通信(Group Communication) 和事务排序技术( transaction ordering techniques)来实现数据库的同步复制
一个Galera集群至少需要3个节点,同时推荐采用奇数个几点,原因为集群内需要大多数节点达到一致,参考MGR的相关内容
## 2. Galera Cluster 类型
Galera Cluster插件是一个开源的,由Codership公司开发的标准MySQL数据库补丁
它有三个分支
- MySQL Galera Cluster by Codership
- Percona XtraDB Cluster by Percona
- MariaDB Galera Cluster (5.5 and 10.0) by MariaDB
从MariaDB Server 10.1开始 Galera已经集成在标准的数据库软件中了,不需要单独的下载
## 3. Galera和普通复制的区别
[image:745 size:orig]
### 3.1 MySQL复制实现
普通MySQL每个主从连接使用3个线程来进行复制,一个在master上,两个位于slave上
**Binlog dump thread**
当从库连接主库时主库会建立该线程来发送二进制文件到从库,我们可以在主库上通过show
PROCESSLIST命令看到该线程
**Slave IO thread**
从库创建该线程来连接主库要求主库发送二进制文件,然后写入到从库的relay log中
**Slave SQL thread**
从库创建该线程来读取Slave IO thread 写入的relay log,然后在从从库中执行他们
MySQL复制是标准MySQL的一部分,原生是异步的,我们可以通过半同步来实现实时同步功能
MySQL复制也可以实现多主复制,不过期维护非常复杂并且容易出错,并不推荐
### 3.2 Galera Cluster实现
Galera Cluster 通过四个组件来实现
**Database Management System**
这就是在各个节点的数据库服务了,支持MySQL Server, Percona Server for MySQL and MariaDB Server
**wsrep API**
该接口是一个复制的提供者,他为写集复制提供与数据库服务器引擎的集成。
wsrep全称为WriteSet Replication
Galera中事务通过一些处理变为writesets后发送到各个节点,这个在后面章节做介绍
**Galera Plugin**
该插件使得写集复制可以正常工作
**Group Communication plugins**
提供Galera Cluste可用的各种组通信系统
数据库厂商需要将WriteSet Replication (wsrep) API 补丁集成到数据库产品中,这将允许Galera plugin作为wsrep API 的提供者,允许其通过group communication协议来和事务进行通信并且复制事务至其他节点
这些使得innoDB可以做到同步的多主复制,事务会同步的提交到所有节点
当一个节点失效时,集群可以继续运作并保持同步,失效节点重新加入集群时,其会自动的从其他节点同步数据,他使用如下两种技术
- State Snapshot Transfer (SST)
- Incremental State Transfer (IST)
## 4. 参考资料
[https://severalnines.com/resources/tutorials/galera-cluster-mysql-tutorial](https://severalnines.com/resources/tutorials/galera-cluster-mysql-tutorial)
[下一章](http://www.zhaibibei.cn/mysql/galera/tutorial2)