MySQL/MariaDB基于MMM实现读写分离及高可用
Posted 马哥Linux运维
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL/MariaDB基于MMM实现读写分离及高可用相关的知识,希望对你有一定的参考价值。
前言
MMM(Master-Master replication managerfor mysql,Mysql主主复制管理器)是一套灵活的脚本程序,基于perl实现,用来对mysql replication进行监控和故障迁移,并能管理mysql Master-Master复制的配置(同一时间只有一个节点是可写的)。
MMM
优缺点
优点:高可用性,扩展性好,出现故障自动切换,对于主主同步,在同一时间只提供一台数据库写操作,保证的数据的一致性。
缺点:Monitor节点是单点,可以结合Keepalived实现高可用。
工作原理
mysql-mmm的监管端会提供多个虚拟IP(VIP),包括一个可写VIP,多个可读VIP,通过监管的管理,这些IP会绑定在可用服务器之上,当某一台服务器宕机时,监管会将VIP迁移至其他服务器。
实现过程
实验拓扑
#注:系统环境CentOS6.6
#VIP172.16.10.30为可写VIP,其他三组为可读VIP
#可写VIP只能在Master之间切换,可读VIP可在Master和Slave之间切换
#前端应用可连接任意可读VIP进行数据读取,连接可写VIP进行数据写入
双主一从配置
DB1配置
[root@node1 ~]# vim /etc/mysql/my.cnf
datadir = /mydata/data
log-bin=/mydata/binlogs/master-bin #二进制文件位置
relay-log=/mydata/relaylogs/relay-bin #中继日志位置
binlog_format=mixed
server-id = 1
auto_increment_offset=1 #双主复制中自增长字段的起始值
auto_increment_increment=2 #双主复制中自增长字段的步长
log_slave_updates = 1 #开启从库更新操作写入二进制日志功能
sync_binlog = 1 #可保证事务日志及时写入磁盘文件
skip-name-resolve #禁用DNS反向解析,如不写此项,则需要在各节点基于主机名通信
read_only = 1
[root@node1 ~]# service mysqld start
授权可用复制用户记录二进制日志位置
![MySQL/MariaDB基于MMM实现读写分离及高可用](https://image.cha138.com/20210502/8e4e25df4d3e4d5897621c7fe6d6fba5.jpg)
DB2配置
[root@node2 ~]# vim /etc/mysql/my.cnf
datadir = /mydata/data
log-bin=/mydata/binlogs/master-bin
relay-log=/mydata/relaylogs/relay-bin
binlog_format=mixed
server-id = 11
auto_increment_offset=2
auto_increment_increment=2
log_slave_updates = 1
sync_binlog = 1
skip-name-resolve
read_only = 1
[root@node2 ~]# service mysqld start
授权可用复制用户记录二进制日志位置
![MySQL/MariaDB基于MMM实现读写分离及高可用](https://image.cha138.com/20210502/8e4e25df4d3e4d5897621c7fe6d6fba5.jpg)
#因为实验之前都做了完整初始化,这里二进制文件位置一致
DB3配置
[root@scholar ~]# vim /etc/mysql/my.cnf
datadir = /mydata/data
relay-log=/mydata/relaylogs/relay-bin
server-id = 111
read_only = 1
skip-name-resolve
[root@scholar ~]# service mysqld start
连接各服务器
DB1连接DB2
![MySQL/MariaDB基于MMM实现读写分离及高可用](https://image.cha138.com/20210502/105948b122374787a4ced94c5e1d787b.jpg)
DB2连接DB1
![MySQL/MariaDB基于MMM实现读写分离及高可用](https://image.cha138.com/20210502/734640004de447d39a58c6cce75e14ba.jpg)
DB3连接DB1
![MySQL/MariaDB基于MMM实现读写分离及高可用](https://image.cha138.com/20210502/1432d3a1e0094a60aed27812fd6f44f1.jpg)
主从测试
![MySQL/MariaDB基于MMM实现读写分离及高可用](https://image.cha138.com/20210502/2994b4ab202040dbbe2b3445201312a0.jpg)
数据一致,主从复制部分完成
MMM配置
安装所需程序包
![MySQL/MariaDB基于MMM实现读写分离及高可用](https://image.cha138.com/20210502/1eb17864f4004755acfeeb349fce8082.jpg)
授权监控及代理用户
![MySQL/MariaDB基于MMM实现读写分离及高可用](https://image.cha138.com/20210502/c2f40512815e44c99b7e1b4e2b5d6382.jpg)
![MySQL/MariaDB基于MMM实现读写分离及高可用](https://image.cha138.com/20210502/8af2c07082934659ba00332d1d4c129b.jpg)
Monitor配置
![MySQL/MariaDB基于MMM实现读写分离及高可用](https://image.cha138.com/20210502/c4775959637649808d3b0eb0778ba14f.jpg)
![MySQL/MariaDB基于MMM实现读写分离及高可用](https://image.cha138.com/20210502/d8604673c6cb4a6e9f9ae2b21261bacf.jpg)
![MySQL/MariaDB基于MMM实现读写分离及高可用](https://image.cha138.com/20210502/c13c27a214074d748108d71776e58377.jpg)
DB1-DB3配置
![MySQL/MariaDB基于MMM实现读写分离及高可用](https://image.cha138.com/20210502/777bd706c46346e68d51012cba63d971.jpg)
启动服务
![MySQL/MariaDB基于MMM实现读写分离及高可用](https://image.cha138.com/20210502/3145c337467941f48e1ff697f22c230b.jpg)
查看当前状态
![MySQL/MariaDB基于MMM实现读写分离及高可用](https://image.cha138.com/20210502/06ae84ee7264468d8a3d9da5eacb19e7.jpg)
查看各节点VIP状态
![MySQL/MariaDB基于MMM实现读写分离及高可用](https://image.cha138.com/20210502/6a33654ef2914243a7c83da045b62e5c.jpg)
![MySQL/MariaDB基于MMM实现读写分离及高可用](https://image.cha138.com/20210502/5b3e678e321948ec88c35dd9e2c7c629.jpg)
高可用测试
模拟db1故障,查看节点状态
![MySQL/MariaDB基于MMM实现读写分离及高可用](https://image.cha138.com/20210502/07b325db53ec4d27b4bf6d66237f98a3.jpg)
再看db1的VIP状态
![MySQL/MariaDB基于MMM实现读写分离及高可用](https://image.cha138.com/20210502/796502ccb3a248c7a2c61212e2e6cf11.jpg)
VIP已被转移到其他节点,其他方面有兴趣请自行测试,这里就不一一展示了
The end
MySQL/MariaDB基于MMM实现读写分离及高可用实验就先说到这里了,有兴趣的朋友可以继续探究基于Keepalived实现Monitor的高可用,这里就不做深究了。
马哥教育
![MySQL/MariaDB基于MMM实现读写分离及高可用](https://image.cha138.com/20210502/dc9a699132244cfe98e5e66dfc7abd1a.jpg)
点击“阅读原文”报名网络班26期(本月25号开班)
以上是关于MySQL/MariaDB基于MMM实现读写分离及高可用的主要内容,如果未能解决你的问题,请参考以下文章