现在的位置: 首页 > 关系型数据库 > MySQL数据库 > 正文

多主写入集群套件(gelera cluster)的说明

时间:2015年10月18日 | 分类:MySQL数据库 | 评论:0 条 | 浏览:2,797 次

目前,mysql 相关的集群套件,聊的比较多的,无非是多点写入、同步复制的问题。市面上,说的比较多的有以下几种:

第一种:percona 公司推出的 percona xtradb cluster 套件(网址:https://www.percona.com/software/mysql-database/percona-xtradb-cluster)

第二种:gelera 公司推出的 gelera cluster 套件(网址:http://galeracluster.com/products/)

目前,gelera 公司的gelera cluster 套件,mariadb 官方已经采用,并且官方提供相关的文档和下载包(mariadb 10 和 mariadb 5 都有)

而针对mysql的话,mysql 官方没有集成,所以,这个工作就是gelera公司在做,它针对mysql 最新的GA版本打上相关patch,然后,结合gelera cluster使用

这些集群套件,是否有在线上使用的案例?线上使用的性能如何?这个,我不是很了解,有在线上实施的,可以留言

下面主要,描述一下,实现的功能:

1).同步复制

2).多主服务器的拓扑结构

3).可以在任意节点上进行读写

4).自动剔除故障节点

5).自动加入新节点

6).真正行级别的并发复制

7).客户端连接跟操作单台MySQL数据库的体验一致

8).无单点故障,易扩展

下面是针对使用gelera cluster 的一些注意事项:

1、使用Galera必须要给MySQL-Server打wsrep补丁。可以直接使用官方提供的已经打好补丁的MySQL安装包;

如果服务器上已经安装了标准版MYSQL,需要先卸载再重新安装。卸载前注意备份数据。

2、MySQL/Galera集群只支持InnoDB存储引擎。如果你的数据表使用的MyISAM,需要转换为InnoDB,否则记录不会在多台复制。

可以在备份老数据时,为mysqldump命令添加–skip-create-options参数,这样会去掉表结构的声明信息,再导入集群时自动使用InnoDB引擎。

不过,这样会将AUTO_INCREMENT一并去掉,已有AUTO_INCREMENT列的表,必须在导入后重新定义。

3、MySQL 5.5及以下的InnoDB引擎不支持全文索引(FULLTEXT indexes),如果之前使用MyISAM并建了全文索引字段的话,只能安装MySQL 5.6 with wsrep patch。

4、所有数据表必须要有主键(PRIMARY),如果没有主键可以建一条AUTO_INCREMENT列。

5、MySQL/Galera集群不支持下面的查询:LOCK/UNLOCK TABLES,不支持下面的系统变量:character_set_server、utf16、utf32及ucs2。

6、数据库日志不支持保存到表,只能输出到文件(log_output = FILE),不能设置binlog-do-db、binlog-ignore-db。

7、跟其他集群一样,为了避免节点出现脑裂而破坏数据,建议Galera集群最低添加3个节点。

8、在高并发的情况下,多主同时写入时可能会发生事务冲突,此时只有一个事务请求会成功,其他的全部失败。可以在写入/更新失败时,自动重试一次,再返回结果。

9、节点中每个节点的地位是平等的,没有主次,向任何一个节点读写效果都是一样的。实际可以配合VIP/LVS或HA使用,实现高可用性。

10、如果集群中的机器全部重启,如机房断电,第一台启动的服务器必须以空地址启动:mysqld_safe –wsrep_cluster_address=gcomm:// >/dev/null &

配图如下:

复件 galera_replication1

×