-
8. MySQL Galera Cluster全解析 Part 8 Galera Cluster和传统MySQL的不同点
tutorial8
-
-
Attachments
-
Changes
-
View Source
-
View
## 前期回顾
| 主机名 |IP地址|操作系统 |MySQL版本|插件版本|
| --- | --- | --- | --- | ---|
| rac1 | 11.12.14.29| Redhat 6.10|5.7.26|25.3.27|
| rac2| 11.12.14.30| Redhat 6.10|5.7.26|25.3.27|
| rac3 | 11.12.14.39 | Redhat 6.10|5.7.26|25.3.27|
前面我们说了Galera Cluster有三种不同的分支
- MySQL Galera Cluster by Codership
- Percona XtraDB Cluster by Percona
- MariaDB Galera Cluster (5.5 and 10.0) by MariaDB
上面我们说了如何一步步搭建MySQL Galera集群
这节内容主要讲其和单机的MySQL有何不同点,包含一些需求和限制
## 1. 服务器不同
Galera需要和传统的单机不一样,其需要集成一些补丁,并且在二进制日志和字符集的处理上也不一样
## 2. 操作系统支持
Galera 支持Linux和类UNIX操作系统,二进制包不在FreeBSD, Solaris and Mac OS X上提供
同时不支持Windows操作系统
## 3. 二进制日志支持
不要使用binlog-do-db and binlog-ignore-db选项
这些二进制日志选项只支持DML语句,不知道DDL语句,可能会造成复制中断
## 4. 不支持的字符集
不要使用UTF-16, UTF-32 or UCS-2字符集
当使用rsync 方法进行SST时,使用这些字符集可能会导致服务崩溃
## 5. 表配置的不同
一些传统数据库的表配置可能Galera不同,如存储引擎支持,查询缓存等
## 6. 存储引擎支持
Galera只支持innodb存储引擎,其他的非事务型存储引擎如MyISAM将无法被复制,只会同步DDL不会同步DML,如新建一张MyISAM表并插入数据,其他节点会新建表但是不会插入数据(行数为0)
## 7.无主键表
不要使用无主键的表,需要为表设置主键,如果实在没有,可以设置自动增长(AUTO_INCREMENT )的列
## 8. 表锁
Galera不支持表锁,因为会和多主冲突,所以LOCKTABLES and UNLOCK TABLES 语句不被支持,同样GET_LOCK() and RELEASE_LOCK()函数也不可以使用
## 9.查询日志
Galera无法将查询日志定向到表中,如有需求,你必须将其定向到文件中
```
log_output = FILE
```
## 10.事务的不同
- Galera不支持分布式事务XA
- 事务的大小上也有限制,否则会大幅降低Galara性能,一般我们设置wsrep_max_ws_rows and the wsrep_max_ws_size参数来限制
## 11. 事务冲突解决
Galera中如果两个事务同时写同一行,而且是在不同的节点,此时只有一个事务会成功,另一个会被回滚,这时你需要重新执行失败的那一个
我们可以在日志中看到一段死锁警告
```
code (Error: 1213 SQLSTATE: 40001 (ER_LOCK_DEADLOCK)
```
## 5. 参考资料
[https://galeracluster.com/library/training/tutorials/differences.html](https://galeracluster.com/library/training/tutorials/differences.html)
[上一章](http://www.zhaibibei.cn/mysql/galera/tutorial7)
[下一章](http://www.zhaibibei.cn/mysql/galera/tutorial9)