一、Mariadb-galera-cluster集群概述

MariaDB的将数据转化结构化信息在广泛的应用,从银行业到网站。这是一个增强,直接替代为MySQL。MariaDB的使用,因为它是快速,可扩展性和强大的,具有存储引擎,插件和许多其他工具的丰富的生态系统,在各种使用情况下非常灵活。

MariaDB的开发开放源代码软件和关系数据库它提供了访问数据的SQL接口。MariaDB的最新版本还包括地理信息系统和JSON功能。

Galera集群的复制功能基于Galeralibrary实现, Galera针对MySQL开发了wsrep API接口。Galera通过认证功能及插件保证集群数据同步及数据的一致性。

· 当客户端发出一个commit的指令,在事务被提交之前,所有对数据库的更改都会被 write-set 收集起来,并且将write-set 纪录的内容发送给其他节点。

· write-set 将在每个节点进行认证测试,测试结果决定着节点是否应用write-set更改数据。

· 如果认证测试失败,节点将丢弃 write-set ;如果认证测试成功,则事务提交。

主要功能/优势:

· 同步复制

· 真正的multi-master,即所有节点可以同时读写数据库

· 自动的节点成员控制,失效节点自动被清除

· 新节点加入数据自动复制

· 真正的并行复制,行级

· 用户可以直接连接集群,使用感受上与MySQL完全一致

· 因为是多主,所以不存在Slavelag(延迟)

· 不存在丢失事务的情况

· 同时具有读和写的扩展能力

· 更小的客户端延迟

· 节点间数据是同步的,而Master/Slave模式是异步的,不同slave上的binlog可能是不同的

二、服务器环境描述




mariadb 集群 不同步_数据


三、服务搭建与测试。

3.1、基础环境准备。(三个节点都需要操作的部分)

[root@mariadb-1 ~]#/etc/init.d/iptables stop

[root@mariadb-1 ~]#vi /etc/sysconfig/selinux

[root@mariadb-1 ~]#vi /etc/hosts

192.168.9.45 mariadb-1

192.168.9.46 mariadb-2

192.168.9.47 mariadb-3

MariaDB 软件安装源

[root@mariadb-1 ~]# vi /etc/yum.repos.d/MariaDB.repo

[mariadb]

name = MariaDB

baseurl = http://yum.mariadb.org/10.0.27/centos6-x86

gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB

enabled=1

gpgcheck=1

安装MariaDB_Galera_server集群软件

yum install -y MariaDB-Galera-server MariaDB-client galera rsync

已安装的版本信息:

MariaDB-client-10.0.27-1.el6.i686

MariaDB-common-10.0.27-1.el6.i686

MariaDB-compat-10.0.27-1.el6.i686

MariaDB-Galera-server-10.0.27-1.el6.i686

或下载二进制包:

安装结束后启动MySQL服务

[root@mariadb-1 ~]#/etc/init.d/ mysql start

执行mysql_secure_installation 进行数据库环境初始化,并设置MariaDB密码。

[root@mariadb-1 ~]# mysql_secure_installation

3.2、MariaDB-galera-cluster集群配置

编辑 192.168.9.45的服务器下 /etc/my.cnf.d/server.conf

在 [mariadb-10.0]下面增加如下内容,当然下面优化参数可以跟据产生情况有选择性的去添加即可。

[root@mariadb-1 ~]#vi /etc/my.cnf.d/server.conf

[mariadb-10.0]

binlog_format=ROW

default-storage-engine=innodb

innodb_autoinc_lock_mode=2

innodb_locks_unsafe_for_binlog=1

query_cache_size=0

query_cache_type=0

bind-address=0.0.0.0

datadir=/var/lib/mysql

innodb_log_file_size=1024M

innodb_file_per_table

innodb_flush_log_at_trx_commit=2

wsrep_provider=/usr/lib/galera/libgalera_smm.so

wsrep_cluster_address="gcomm://192.168.9.45,192.168.9.46,192.168.9.47"

wsrep_cluster_name='galera_cluster'

wsrep_node_address='192.168.9.45'

wsrep_node_name='mariadb-1'

wsrep_sst_method=rsync

wsrep_sst_auth=root:123456

192.168.9.46 服务器需要修改地方如下:

wsrep_node_address='192.168.9.46'

wsrep_node_name='mariadb-2'

192.168.9.47 服务器需要修改地方如下:

wsrep_node_address='192.168.9.47

wsrep_node_name='mariadb-2'

3.3、登陆数据库,授权用于集群同步的用户和密码

[root@mariadb-1 ~]# mysql -uroot –p123456

MariaDB [(none)]> GRANT USAGE ON *.* to root@'%' IDENTIFIED BY '123456';

MariaDB [(none)]> GRANT ALL PRIVILEGES on *.* to root@'%';

MariaDB [(none)]> FLUSH PRIVILEGES;

MariaDB [(none)]> QUIT

3.4、启动192.168.9.45服务器

[root@mariadb-1 ~]#/etc/init.d/mysql start --wsrep-new-cluster

随后启动其他两个mysql服务 service mysql start

通过查看4567端口确认集群是否启动


mariadb 集群 不同步_mysql_02


登录任意一台服务器节点通过 show status like 'wsrep%' 命令可以查看集群状态

[root@mariadb-2 ~]# mysql –u root –p123456

MariaDB [(none)]> SHOW STATUS LIKE 'wsrep_%';


mariadb 集群 不同步_数据_03


我们可以关注几个关键的参数:

wsrep_connected = on 链接已开启

wsrep_local_index = 1 在集群中的索引值

wsrep_cluster_size =3 集群中节点的数量

wsrep_incoming_addresses = 10.128.20.17:3306,10.128.20.16:3306,10.128.20.18:3306

集群中节点的访问地址

3.5、监控状态参数说明

集群完整性检查:

wsrep_cluster_state_uuid:在集群所有节点的值应该是相同的,有不同值的节点,说明其没有连接入集群。

wsrep_cluster_conf_id:正常情况下所有节点上该值是一样的.如果值不同,说明该节点被临时"分区"了.当节点之间网络连接恢复的时候应该会恢复一样的值。

wsrep_cluster_size:如果这个值跟预期的节点数一致,则所有的集群节点已经连接。

wsrep_cluster_status:集群组成的状态.如果不为"Primary