快乐学习
前程无忧、中华英才非你莫属!

Day10-MySQL架构实战-MHA+MaxScale(验证)

一、验证读写分离

备注为了配置MaxScale.cnf文件的端口生效,简便做法去除所有节点上的防火墙

伪分布模式安装步骤:1、 关闭防火墙 :service iptables stop                                centos7版本:  systemctl stop firewalld.service

                                      验证防火墙状态:service iptables status                        centos7版本:  firewall-cmd --state

                                      关闭防火墙的自动开启 :chkconfig iptables off             centos7版本:  systemctl disable firewalld.service

                                      chkconfig --list | grep iptables(查看防火墙服务状态)  centos7版本:systemctl status firewalld 

配置主从复制关系:   主库:60  从库:61,62

先让主从数据库数据不一致,这样还能看出来是到底从哪个机器上查询的数据。

在slave1,slave2 手动插入一条id=2的数据。

启动

/etc/init.d/maxscale start

通过访问maxscale 中间层,192.168.1.59 通过解析分配到权重比较大的从库上去。

说明:只要select 就不会访问到主库。

mysql -h192.168.1.59 -uroot -pzhangtongle123 mydb3 -P4006 -e "select * from employee;"

因为是插入的是中文,命令行工具识别不了所以 显示乱码,这个不碍事。证明我们通过中间层让读写分离就ok!

二、让MaxScale感知到Mysql的复制延迟,和从库全部关闭或宕机的时候的处理。

实验略

max_slave_replication_lag=5
# 当select请求在一个从库上,查询相应超过5秒,就会自动切换到其他节点。

detect_stale_master=1
# 当所有的slave节点挂了,或者关闭了。强制从master去查询了。

三、结合MHA做故障转移切换

注意:MaxScale 无法对主库做故障转移切换,这里需要借助第三方工具,如MHA来进行实现。

但故障切换后,MaxScale是可以自动识别哪台机器是master的。另外,架构必须是一主带N从,不能是双主带N从

Maxscale与MHA整合

Maxscale与MHA整合其实非常简单,一般MHA都会让 开发使用vip。master宕掉后,slave接管,对前端是透明的。

在与Maxscale结合的时候,Maxscale.conf文件不需要改变任何东西,只需要在后端将MHA部署上就可以。因Maxscale可以监控MySQL的主从变更。

总结:Maxscale与MHA整合,只需要安装MHA即可。

写在最后,对已有的MySQL主从环境上MHA和Maxscale几乎不需要更改任何配置。只需要更改开发框架中的配置 ,把原IP和端口改写为Maxscale server的IP和端口即可。

检查复制链路

masterha_check_repl --conf=/etc/app1.cnf

发现主从数据不一致。在主库上执行:

验证主从数据是否一致:
pt-table-checksum h='192.168.1.60',u='root',p='zhangtongle123',P=3306 --databases "mydb3" --tables "employee" --nocheck-replication-filters  --replicate=mydb3.checksums  --no-check-binlog-format

检测不一致在哪里:
pt-table-sync --replicate=mydb3.checksums h='192.168.1.60',u='root',p='zhangtongle123',P='3306' --databases=mydb3  --print

删除主从上不一致的数据:
pt-table-sync --replicate=mydb3.checksums h='192.168.1.60',u='root',p='zhangtongle123',P='3306' --databases=mydb3  --execute

再次检查复制链路

备注:手动添加虚拟vip

ip addr add 192.168.1.100/32 dev eth2

masterha_check_repl --conf=/etc/app1.cnf

开启mha

并检测Maxscale 服务器状态

模拟一下主库宕机了:

虚拟ip就会自动切换到从库slave1:61 上来。

然后再次检测下MaxScale后台服务是不是自动识别新的主库:已经成功自动识别新的主库和从库,并标识60已经down了!

maxadmin  -uadmin -pmariadb -P6603 -e "list servers"

在然后通过MaxScale 服务器插入一条数据给新的主库看是否正常!

mysql -h192.168.1.59 -uroot -pzhangtongle123 mydb3 -P4006 -e "insert into employee values ('2',  '王五', '男', '1980-04-30', '20000', '教授');"

OK,成功插入61并成功同步62.

四、快速初始化环境:

1、停止mha和maxscale

/etc/init.d/maxscale stop
masterha_stop --conf=/etc/app1.cnf

2、重新配置主从:

在61、62上执行。并从60主库上(show master status 获得MASTER_LOG_FILE、MASTER_LOG_POS )

stop slave;
reset slave all;
CHANGE MASTER TO MASTER_HOST='192.168.1.60',MASTER_USER='repl',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000013',MASTER_LOG_POS=107;
start slave;
show slave status;

3、重新开启:mha和maxscale

去掉slave1的vip,加载master上。

ip addr delete 192.168.1.100/32 dev eth2
ip addr add 192.168.1.100/32 dev eth2

4、检查复制链路:

masterha_check_repl --conf=/etc/app1.cnf

5、开启MHA、MaxScale服务:

/root/mha_sh/startmha.sh

/etc/init.d/maxscale start

6、检查MaxScale服务

maxadmin  -uadmin -pmariadb -P6603 -e "list servers"

打赏
赞(0) 打赏
未经允许不得转载:同乐学堂 » Day10-MySQL架构实战-MHA+MaxScale(验证)

特别的技术,给特别的你!

联系QQ:1071235258QQ群:710045715

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏

error: Sorry,暂时内容不可复制!