Mariadbgalera集群配置.docx
- 文档编号:29387997
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:12
- 大小:403.13KB
Mariadbgalera集群配置.docx
《Mariadbgalera集群配置.docx》由会员分享,可在线阅读,更多相关《Mariadbgalera集群配置.docx(12页珍藏版)》请在冰豆网上搜索。
Mariadbgalera集群配置
MariaDB作为Mysql的一个分支,在开源项目中已经广泛使用,例如大热的openstack,所以,为了保证服务的高可用性,同时提高系统的负载能力,集群部署是必不可少的。
MariaDBGaleraCluster介绍
MariaDB集群是MariaDB同步多主机集群。
它仅支持XtraDB/InnoDB存储引擎(虽然有对MyISAM实验支持-看wsrep_replicate_myisam系统变量)。
主要功能:
●同步复制
●真正的multi-master,即所有节点可以同时读写数据库
●自动的节点成员控制,失效节点自动被清除
●新节点加入数据自动复制
●真正的并行复制,行级
●用户可以直接连接集群,使用感受上与MySQL完全一致
优势:
●因为是多主,所以不存在Slavelag(延迟)
●不存在丢失事务的情况
●同时具有读和写的扩展能力
●更小的客户端延迟
●节点间数据是同步的,而Master/Slave模式是异步的,不同slave上的binlog可能是不同的
技术:
Galera集群的复制功能基于Galeralibrary实现,为了让MySQL与Galeralibrary通讯,特别针对MySQL开发了wsrepAPI。
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.101hmcloud-Flow02:
10.199.10.102hmcloud-Flow03:
10.199.10.103
为了保证节点间相互通信,需要禁用防火墙设置:
在三个节点分别执行命令:
systemctlstopfirewalld
systemctlenablefirewalld
如需要开启防火墙,需要开放mariadb端口和4567端口,并开启组播(keepalived),实测firewall开启后即使开放端口和协议也会导致haproxy不能转发,如需使用防火墙功能建议更换成iptables.
firewall-cmd--direct--permanent--add-ruleipv4filterINPUT0--in-interfaceeth0--destination224.0.0.18--protocolvrrp-jACCEPT
firewall-cmd--add-port=4567/tcp--permanent
firewall-cmd--reload
关闭selinux:
sed-i's/SELINUX=enforcing/SELINUX=disabled/g'/etc/selinux/config,
setenforce0
host解析,分别修改三台机器/etc/hosts,添加对应IP和主机名
创建mysql目录,挂载磁盘
mkdir/data/
mount/dev/sdb/data/
vim/etc/fstab添加挂载项
mkdir/data/mysql
升级内核,设置新内核为默认kernel,启用BBR协议
rpm--importhttps:
//www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm-Uvhhttp:
//www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpmyum--enablerepo=elrepo-kernelinstallkernel-ml-develkernel-ml-y
[root@Ms_NxEra~]#cat/boot/grub2/grub.cfg|grep4.
[root@Ms_NxEra~]#grub2-set-default"CentOSLinux(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-Flow01mariadb]#cat/etc/yum.repos.d/mariadb.repo
[mariadb]
name=MariaDB
baseurl=http:
//yum.mariadb.org/10.1.21/centos7-amd64/
gpgkey=https:
//yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
2.安装MariaDBGaleraCluster
[root@hmcloud-Flow01~]#yuminstallMariaDB-serverMariaDB-clientgalera-y
3.配置MariaDBGaleraCluster
初始化数据库服务,只在一个节点进行
[root@hmcloud-Flow01mariadb]#systemctlstartmariadb
[root@hmcloud-Flow01mariadb]#mysql_secure_installation
关闭数据库,修改/etc/f.d/f
[root@hmcloud-Flow01~]#systemctlstopmariadb
[root@hmcloud-Flow01~]#vim/etc/f.d/f
[galera]
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
#wsrep_cluster_address="gcomm:
//"
wsrep_cluster_address="gcomm:
//10.199.10.101,10.199.10.102,10.199.10.103"
wsrep_node_name=hmcloud-Flow01#各节点名称,另外的节点需要修改
wsrep_cluster_name=hmcloud
wsrep_node_address=10.199.10.101#节点IP,另外的节点需要修改
wsrep_on=ON
binlog_format=ROW
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
#bind-address=0.0.0.0
wsrep_slave_threads=1
innodb_flush_log_at_trx_commit=0
innodb_buffer_pool_size=122M
wsrep_sst_method=rsync
[embedded]
[mariadb]
datadir=/data/mysql
socket=/var/lib/mysql/mysql.sock
port=3333
innodb_rollback_on_timeout=1
innodb_lock_wait_timeout=600
max_connections=350
skip-name-resolve
log-bin=mysql-bin
auto-increment-offset=1
auto-increment-increment=2
expire_logs_days=10
#skip-grant-tables
提示:
将此文件复制到其余节点,注意要把wsrep_node_name和wsrep_node_address改成相应节点的hostname和ip。
mariad默认安装在/var/lib/mysql目录下,上面配置文件修改datadir,需要将/var/lib/mysql下的所有文件拷贝过去才能正常启动
cp-r/var/lib/mysql/data/mysql
chownmysql:
mysql-R/data/mysql
4.启动MariaDBGaleraCluster服务
[root@hmcloud-Flow01~]#/usr/sbin/mysqld--wsrep-new-cluster--user=root&
观察日志:
[root@hmcloud-Flow01~]#tail-f/var/log/mariadb/mariadb.log
15070119:
54:
17[Note]WSREP:
wsrep_load():
loadingproviderlibrary'none'
15070119:
54:
17[Note]/usr/libexec/mysqld:
readyforconnections.
Version:
'5.5.40-MariaDB-wsrep' socket:
'/var/lib/mysql/mysql.sock' port:
3306 MariaDBServer,wsrep_25.11.r4026
出现readyforconnections,证明我们启动成功,其他节点做好准备配置,修改好mysql配置文件/etc/f.d/f后启动即可:
[root@hmcloud-Flow02~]#systemctlstartmariadb
[root@hmcloud-Flow03~]#systemctlstartmariadb
可以查看/var/log/mariadb/mariadb.log,在日志可以看到节点均加入了集群中。
警告⚠:
--wsrep-new-cluster这个参数只能在初始化集群使用,且只能在一个节点使用,在节点故障修复后只需要执行systemctlstartmariadb即可重新加入集群
5.查看集群状态
我们可以关注几个关键的参数:
wsrep_connected=on链接已开启
wsrep_local_index=1在集群中的索引值
wsrep_cluster_size=3集群中节点的数量
wsrep_incoming_addresses=10.199.10.101:
3333,10.199.10.101:
3333,10.199.10.101:
3333集群中节点地址
6.验证数据同步
我们在node4上新建数据库galera_test,然后在node5和node6上查询,如果可以查询到galera_test这个库,说明数据同步成功,集群运行正常。
[root@hmcloud-Flow01~]mysql -uroot -proot -e "createdatabasegalera_test"
[root@hmcloud-Flow01~]mysql -uroot -proot -e "showdatabases"
+--------------------+
|Database |
+--------------------+
|information_schema|
|galera_test |
|mysql |
|performance_schema|
+--------------------+
[root@hmcloud-Flow02~]mysql -uroot -proot -e "showdatabases"
+--------------------+
|Database |
+--------------------+
|information_schema|
|galera_test |
|mysql |
|performance_schema|
+--------------------+
至此,我们的MariaDBGaleraCluster已经成功部署。
二.haproxy+keepalive配置
yuminstallkeepalivedhaproxy-y
修改keepalive配置文件
[root@hmcloud-Flow01mariadb]#cat/etc/keepalived/keepalived.conf
!
ConfigurationFileforkeepalived
global_defs{
notification_email{
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_fromAlexandre.Cassen@firewall.loc
smtp_server192.168.200.1
smtp_connect_timeout30
router_idLVS_DEVEL
}
}
vrrp_sync_groupVG_1{
group{
VI_1
}
}
vrrp_instanceVI_1{
stateBACKUP#此处每个节点都是BACKUP,不需要master
interfaceeth0
mcast_src_ip10.199.10.101#本机IP
virtual_router_id91#各节点需要一致,默认的ID可能在局域网内被占用,需要修改
priority100#权重,各节点不一致但相差接近
advert_int1
authentication{
auth_typePASS
auth_passpassword
}
virtual_ipaddress{
10.199.10.100
}
}
启动服务
systemctlstartkeepalived
检查VIP是否起来,VIP只在一个节点上,另外的节点如果有VIP存在,请检查防火墙,selinx等
修改haproxy配置文件,各节点一致
[root@hmcloud-Flow02~]#cat/etc/haproxy/haproxy.cfg
global
log127.0.0.1local2
chroot/var/lib/haproxy
pidfile/var/run/haproxy.pid
maxconn4000
userhaproxy
grouphaproxy
daemon
statssocket/var/lib/haproxy/stats
defaults
modetcp#默认的模式mode{tcp|http|health},tcp是4层,http是7层,health只会返回OK
retries3#两次连接失败就认为是服务器不可用,也可以通过后面设置
optionredispatch#当serverId对应的服务器挂掉后,强制定向到其他健康的服务器
optionabortonclose#当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接
maxconn32000#默认的最大连接数
timeoutconnect5000ms#连接超时
timeoutclient30000ms#客户端超时
timeoutserver30000ms#服务器超时
#timeoutcheck2000#心跳检测超时
log127.0.0.1local0err#[errwarninginfodebug]
listenstats
modehttp
bind*:
8000
statsenable
statsrefresh30s#统计页面自动刷新时间
statsuri/haproxy
statshide-version
statsrealmhm\Statistics
statsauthhmcloud:
password
listenmariadb
modetcp
bind*:
3306
balanceleastconn
optionmysql-checkuserhaproxy
serverhmcloud-Flow0110.199.10.101:
3333weight1maxconncheckinter2000rise2fall5
serverhmcloud-Flow0210.199.10.102:
3333weight1maxconncheckinter2000rise2fall5
serverhmcloud-Flow0310.199.10.103:
3333weight1maxconncheckinter2000rise2fall5
到此,mariadb高可用集群已经部署完成。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Mariadbgalera 集群 配置