一、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可能是不同的
二、服务器环境描述
三、服务搭建与测试。
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端口确认集群是否启动
登录任意一台服务器节点通过 show status like 'wsrep%' 命令可以查看集群状态
[root@mariadb-2 ~]# mysql –u root –p123456
MariaDB [(none)]> SHOW STATUS LIKE 'wsrep_%';
我们可以关注几个关键的参数:
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