Mariadb-galera集群配置
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MariaDB作为Mysql的一个分支,在开源项目中已经广泛使用,例如大热的openstack,所以,为了保证服务的高可用性,同时提高系统的负载能力,集群部署是必不可少的。
MariaDB Galera Cluster 介绍
MariaDB集群是MariaDB同步多主机集群。它仅支持XtraDB/ InnoDB存储引擎(虽然有对MyISAM实验支持 - 看wsrep_replicate_myisam系统变量)。
主要功能:
●同步复制
●真正的multi-master,即所有节点可以同时读写数据库
●自动的节点成员控制,失效节点自动被清除
●新节点加入数据自动复制
●真正的并行复制,行级
●用户可以直接连接集群,使用感受上与MySQL完全一致
优势:
●因为是多主,所以不存在Slavelag(延迟)
●不存在丢失事务的情况
●同时具有读和写的扩展能力
●更小的客户端延迟
●节点间数据是同步的,而Master/Slave模式是异步的,不同slave上的binlog可能是不
同的
技术:
Galera集群的复制功能基于Galeralibrary实现,为了让MySQL与Galera library通讯,特别针对MySQL开发了wsrep API。
Galera插件保证集群同步数据,保持数据的一致性,靠的就是可认证的复制,工作原理如下图:
当客户端发出一个commit的指令,在事务被提交之前,所有对数据库的更改都会被write-set收集起来,并且将 write-set 纪录的内容发送给其他节点。
write-set 将在每个节点进行认证测试,测试结果决定着节点是否应用write-set更改数据。如果认证测试失败,节点将丢弃 write-set ;如果认证测试成功,则事务提交。
一.mariadb集群配置
1.安装环境准备
安装MariaDB集群至少需要3台服务器(如果只有两台的话需要特殊配置,请参照官方文档)
在这里,我列出试验机器的配置:
操作系统版本:CentOS7.3、mariadb10.1.21
hmcloud-Flow01:10.199.10.101 hmcloud-Flow02:10.199.10.102 hmcloud-Flow03:10.199.10.103
为了保证节点间相互通信,需要禁用防火墙设置:
在三个节点分别执行命令:
systemctl stop firewalld
systemctl enable firewalld
如需要开启防火墙,需要开放mariadb端口和4567端口,并开启组播(keepalived),实测firewall开启后即使开放端口和协议也会导致haproxy不能转发,如需使用防火墙功能建议更换成iptables.
firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --in-interface eth0 --destination 224.0.0.18 --protocol vrrp -j ACCEPT
firewall-cmd --add-port=4567/tcp --permanent
firewall-cmd --reload
关闭selinux:
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config,
setenforce 0
host解析,分别修改三台机器/etc/hosts,添加对应IP和主机名
创建mysql目录,挂载磁盘
mkdir /data/
mount /dev/sdb /data/
vim /etc/fstab添加挂载项
mkdir /data/mysql
升级内核,设置新内核为默认kernel ,启用BBR协议
rpm --import https:///
rpm -Uvh /elrepo-release-7.0-2.el7.elrepo.noarch.rpm yum --enablerepo=elrepo-kernel install kernel-ml-devel kernel-ml -y
[root@Ms_NxEra ~]# cat /boot/grub2/grub.cfg |grep 4.
[root@Ms_NxEra ~]# grub2-set-default "CentOS Linux (4.9.0-1.el7.elrepo.x86_64) 7 (Core)"
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
echo "net.core.default_qdisc=fq">> /etc/sysctl.conf
配置安装源
[root@hmcloud-Flow01 mariadb]# cat /etc/yum.repos.d/mariadb.repo [mariadb]
name = MariaDB
baseurl = /10.1.21/centos7-amd64/
gpgkey=https:///RPM-GPG-KEY-MariaDB
gpgcheck=1
2.安装 MariaDB Galera Cluster
[root@hmcloud-Flow01 ~]#yum install MariaDB-server MariaDB-client galera -y
3.配置 MariaDB Galera Cluster
初始化数据库服务,只在一个节点进行
[root@hmcloud-Flow01 mariadb]# systemctl start mariadb
[root@hmcloud-Flow01 mariadb]# mysql_secure_installation
关闭数据库,修改 /etc/f.d/f