美文网首页
Galera Cluster集群部署

Galera Cluster集群部署

作者: wuzsheng | 来源:发表于2018-11-08 23:29 被阅读41次

简介

主要功能:
同步复制
真正的multi-master,即所有节点可以同时读写数据库
自动的节点成员控制,失效节点自动被清除
新节点加入数据自动复制
真正的并行复制,行级
用户可以直接连接集群,使用感受上与MySQL完全一致

优势:
因为是多主,所以不存在Slave lag(延迟)
不存在丢失交易的情况
同时具有读和写的扩展能力
更小的客户端延迟
节点间数据是同步的,而Master/Slave模式是异步的,不同slave上的binlog可能是不同的

技术:
Galera集群的复制功能基于Galera library实现,为了让MySQL与Galera library通讯,特别针对MySQL开发了wsrep API。

Galera是一个MySQL(也支持MariaDB,Percona)的同步多主集群软件,目前只支持InnoDB引擎。

环境

centos6.6
MariaDB版本:10.2.6

以下三台建立集群
wzs6-1:10.0.102.176
wzs6-2:10.0.102.217
wzs6-3: 10.0.102.216

配置

wzs6-1

1.创建用于节点的账户

MariaDB [(none)]>grant all privileges on *.* to sst@'%' identified by "123";
flush privileges  //刷新权限

2.创建wsrep.cnf文件

cp /usr/share/mysql/wsrep.cnf  /etc/my.cnf.d/
vim /etc/my.cnf.d/wsrep.cnf

wsrep_provider=/usr/lib64/galera/libgalera_smm.so
#集群中的其他节点地址:可以是IP和用户名
wsrep_cluster_address="gcomm://"
wsrep_sst_method=rsync
节点的数据库账户和密码
wsrep_sst_auth=sst:123  

service mysql  restart
"gcomm://" 是特殊的地址,仅仅是Galera cluster初始化启动时候使用。
如果集群启动以后,我们关闭了第一个节点,那么再次启动的时候必须先修改
"gcomm://"为其他节点的集群地址,例如
wsrep_cluster_address="gcomm://10.0.102.217:4567"

3.修改/etc/my.cnf.d/server.cnf

vim /etc/my.cnf.d/server.cnf
[galera]
wsrep_on=ON

MariaDB10.1之后wsrep默认值为OFF,即需设置为ON(mariadb10.1之前默认值为on)
否则节点中的任何事务都不会复制到群集中的其他节点。

4.确认mysql的3306端口和wsrep的4567端口处于监听状态

netstat -antlp|grep -e 4567 -e 3306

wzs6-2

重复wzs6-1中步骤1 2 3
只修改步骤2中
wsrep_cluster_address="gcomm://10.0.102.176:4567"

wzs6-3

重复wzs6-1中步骤1 2 3
只修改步骤2中
wsrep_cluster_address="gcomm://10.0.102.176:4567,10.0.102.217:4567"

验证

wzs6-1

[root@wzs6-1 backup]# netstat -antlp|grep -e 3306 -e 4567
tcp        0      0 0.0.0.0:4567                0.0.0.0:*                   LISTEN      31968/mysqld        
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      31968/mysqld        
tcp        0      0 10.0.102.176:4567           10.0.102.217:8008           ESTABLISHED 31968/mysqld        
tcp        0      0 10.0.102.176:4567           10.0.102.216:5224           ESTABLISHED 31968/mysqld 
MariaDB [(none)]>  show status like 'wsrep%'; 查看集群信息
wsrep_cluster_size | 3 
wsrep_connected    | ON
wsrep_incoming_addresses | 10.0.102.216:3306,10.0.102.217:3306,10.0.102.176:3306
1.png

wsrep_incoming_addresses | 1连接中的数据库
| wsrep_cluster_size | 2 | 集群成员个数
| wsrep_cluster_status | Primary | 主服务器
| wsrep_connected | ON | 当前是否连接中

注意

注意:测试成功后
将集群每台机中
vim /etc/my.cnf.d/wsrep.cnf
wsrep_cluster_address="gcomm://10.0.102.176:4657,10.0.102.176:4567,10.0.102.217:4567"

新节点只需要连接到其中一个现有成员。它将自动检索群集映射并重新连接
到其余节点,当然最好列出群集的所有节点,以便任何节点都可以加入连接
到任何其他节点的群集,即使一个或多个节点已关闭

扩展

1.  修改mysql默认字符集
临时生效:
MariaDB [(none)]> show variables like 'character%';
MariaDB [(none)]>set character_set_server=utf8;
MariaDB [(none)]>set character_set_database=utf8;

永久生效
vim /etc/my.cnf.d/serve.cnf
[galera]
character_set_server=utf8
【不用在添加character_set_database=utf8,否则报错】

相关文章

网友评论

      本文标题:Galera Cluster集群部署

      本文链接:https://www.haomeiwen.com/subject/dsggxqtx.html