Mariadb-galera集群配置
更新时间:2024-04-11 17:40:01 阅读量: 综合文库 文档下载
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 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协议
hmcloud-Flow02:10.199.10.102
hmcloud-
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/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 \7 (Core)\
echo \>> /etc/sysctl.conf echo \>> /etc/sysctl.conf
配置安装源
[root@hmcloud-Flow01 mariadb]# 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.安装 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/my.cnf.d/galera.cnf
[root@hmcloud-Flow01 ~]# systemctl stop mariadb
[root@hmcloud-Flow01 ~]# vim /etc/my.cnf.d/server.cnf [galera]
wsrep_provider = /usr/lib64/galera/libgalera_smm.so #wsrep_cluster_address = \
wsrep_cluster_address = \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 chown mysql:mysql -R /data/mysql
4.启动 MariaDB Galera Cluster 服务
[root@hmcloud-Flow01 ~]#/usr/sbin/mysqld --wsrep-new-cluster --user=root &
观察日志:
[root@hmcloud-Flow01 ~]# tail -f /var/log/mariadb/mariadb.log
150701 19:54:17 [Note] WSREP: wsrep_load(): loading provider library 'none' 150701 19:54:17 [Note] /usr/libexec/mysqld: ready for connections. Version: '5.5.40-MariaDB-wsrep' socket: '/var/lib/mysql/mysql.sock' 3306 MariaDB Server, wsrep_25.11.r4026
port:
出现 ready for connections ,证明我们启动成功,其他节点做好准备配置,修改好mysql配置文件/etc/my.cnf.d/server.cnf后启动即可:
[root@hmcloud-Flow02 ~]# systemctl start mariadb [root@hmcloud-Flow03 ~]# systemctl start mariadb
可以查看/var/log/mariadb/mariadb.log,在日志可以看到节点均加入了集群中。
警告?:--wsrep-new-cluster 这个参数只能在初始化集群使用,且只能在一个节点使用,在节点故障修复后只需要执行systemctl start mariadb即可重新加入集群 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 \
[root@hmcloud-Flow01 ~]mysql -uroot -proot -e \ +--------------------+ | Database | +--------------------+ | information_schema | | galera_test | | mysql |
| performance_schema | +--------------------+
[root@hmcloud-Flow02 ~] mysql -uroot -proot -e \ +--------------------+ | Database | +--------------------+ | information_schema | | galera_test | | mysql |
| performance_schema | +--------------------+
至此,我们的 MariaDB Galera Cluster 已经成功部署。
二.haproxy+keepalive配置 yum install keepalived haproxy -y 修改keepalive配置文件
[root@hmcloud-Flow01 mariadb]# cat /etc/keepalived/keepalived.conf ! Configuration File for keepalived
global_defs { notification_email { acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc }
notification_email_from Alexandre.Cassen@firewall.loc smtp_server 192.168.200.1 smtp_connect_timeout 30 router_id LVS_DEVEL } }
vrrp_sync_group VG_1 { group { VI_1 } }
vrrp_instance VI_1 {
state BACKUP #此处每个节点都是BACKUP,不需要master interface eth0
mcast_src_ip 10.199.10.101 #本机IP
virtual_router_id 91 #各节点需要一致,默认的ID可能在局域网内被占用,需要修改
priority 100 #权重,各节点不一致但相差接近 advert_int 1 authentication { auth_type PASS auth_pass password }
virtual_ipaddress { 10.199.10.100 } } 启动服务
systemctl start keepalived
检查VIP是否起来,VIP只在一个节点上,另外的节点如果有VIP存在,请检查防火墙,selinx等
修改haproxy配置文件,各节点一致
[root@hmcloud-Flow02 ~]# cat /etc/haproxy/haproxy.cfg global
log 127.0.0.1 local2
chroot /var/lib/haproxy pidfile /var/run/haproxy.pid maxconn 4000 user haproxy group haproxy daemon
stats socket /var/lib/haproxy/stats
defaults
mode tcp #默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK
retries 3 #两次连接失败就认为是服务器不可用,也可以通过后面设置 option redispatch #当serverId对应的服务器挂掉后,强制定向到其他健康的服务器
option abortonclose #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接
maxconn 32000 #默认的最大连接数 timeout connect 5000ms #连接超时 timeout client 30000ms #客户端超时 timeout server 30000ms #服务器超时
#timeout check 2000 #心跳检测超时
log 127.0.0.1 local0 err #[err warning info debug]
listen stats mode http bind *:8000 stats enable
stats refresh 30s #统计页面自动刷新时间 stats uri /haproxy stats hide-version
stats realm hm\\ Statistics stats auth hmcloud:password
listen mariadb mode tcp bind *:3306
balance leastconn
option mysql-check user haproxy
server hmcloud-Flow01 10.199.10.101:3333 weight 1 maxconn check inter 2000 rise 2 fall 5
server hmcloud-Flow02 10.199.10.102:3333 weight 1 maxconn check inter 2000 rise 2 fall 5
server hmcloud-Flow03 10.199.10.103:3333 weight 1 maxconn check inter 2000 rise 2 fall 5
到此,mariadb高可用集群已经部署完成。
正在阅读:
Mariadb-galera集群配置04-11
精选-地理人教版必修1练习:第一章 章末总结提升 word版含解析-文档资料01-04
《旅游策划学》旅游路线设计例子08-17
萃取题库计算题精选(课堂版) - 图文11-24
正镶白旗游牧文化展览专业合作社游牧旅游文化用品展览项目可行性07-09
中学生学习报语文周刊02-20
《芦叶船》教学设计04-21
我的业余爱好作文400字06-18
最新关于订货会发言稿范文通用版06-21
湖南城市学院 水分析化学试题计算题10-27
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 集群
- 配置
- Mariadb
- galera
- 黄亮和李燕的创业故事
- 大会须知
- 股票选股器名录展开
- CNC手工编程
- 小纪一小数学常规管理要求
- 2018年高考热点英语作文24篇 - 传统文化(含范文)
- 煤矿岗位制
- 幼儿园优秀教案小班绘本教学 小猫的生日
- 心灵之旅作文
- 小学二年级主题班会活动方案与记录:做个守纪的好学生
- 金融学习题册及答案
- 临床科室各级各类人员岗位职责
- 关于印发公路工程竣交工验收办法实施细则的通知(交公路发〔2010
- PAC运作机制(产品决策评审操作指南)A1
- 五代、两宋、辽、金时期的单檐木构建筑 - 图文
- 传热学--华电保定
- 毛泽东《论持久战》中的国防思想
- 《情节突转》作文课教案
- 数字图像处理实验报告(全部)
- 2010-2012年就业工作自评报告(最终) - 图文