mysql主从模式自动切换_Mycat在MySQL主从模式(1主1从)下读写分离和及自动切换模式的验证...

本文介绍了在MySQL主从模式(1主1从)下,通过Mycat实现读写分离和自动切换的详细步骤。包括MySQL的安装、配置主从关系,以及Mycat的配置、启动和日志分析,最终成功验证了Mycat的读写分离和主服务器故障时的自动切换功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实验环境

两台Centos7  MySQL5.7.12 IP地址为:192.168.10.36  192.168.10.37

一台Centos7 Mycat IP地址为:192.168.10.31

一:安装mysql,如下图所示(这里采用yum安装):

0b591da18e3ca7f6ee70dcf3d4283605.png

二:配置MYSQL,以及建立MYSQL主从

1:初始化密码,由于我没在/root目录下找到第一次启动的随机密码,所以我只能用如下操作

vi /etc/my.cnf

mysqd 字段添加 #skip-grant-tables

然后重启mysql   systemctl restart mysqld    这个时候没有密码也能进去;执行下面这一条语句:

update mysql.user set authentication_string=password(123456) where user='root' and Host = 'localhost';

此时重启mysql后,注释掉刚刚添加的那个字段,systemctl restart mysqld  会告诉你的密码不符合复杂程度要求,需要再次更改;

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('1234@Mfg');

FLUSH PRIVILEGES;

之后用新的密码登录即可!

2:配置MYSQL主从,mysql配置文件内容修改如下图,主从的server_id一个为36,另外一个为37,此处必须保持不一致:

2079a922415998b041306ba6b9d2ba75.png

06e4086925c424172bf00971842f0b03.png

3:执行如下命令,使其建立主从关系,192.168.10.37为192.168.10.36的Slave

在192.168.10.36上执行:

grant replication slave on *.* to 'sync'@'192.168.10.37' identified by 'sync';

在192.168.10.37上执行:

change master to master_host='192.168.10.36', master_user='repluser',master_password='replpass', master_auto_position=1;(此处使用的是GTID多线程复制)

start slave;

此时使用show slave status\G;可验证主从关系是否建立完成,如下图:

5d15fee7dd7acaf450211c89a790fb50.png

三:配置Mycat

1:逻辑库为myyangtest,逻辑表为:

f72ccedecb56b349ee67ea7b8164ca83.png

2:查看schema.xml配置文件如下图所示:

b3db7e4f252f91005978571bd23ba73f.png

419aec3a7133d187f9b4620a484f0359.png

b354abf2615f359c0d813fcad99af0d5.png

此处为1个dataHost;3个dataNode节点;

3:查看rule.xml配置文件如下图所示:

941956a7525ee3efe644c4a2de33d05b.png

7e202cda838ec58d069f162c01bb63e0.png

16876d1787726603254ec8d00b1b5bb4.png

4:查看server.xml配置文件内容,主要内容如下图所示:

70c20ff434b07899588da7f94244e672.png

5:启动Mycat,并且开启Mycat的日志的Debug模式,

./bin/mycat start

6:创建myyang表,并开始插入数据;

945dac16f52805f7c4592fb46e1a66e5.png

16c3ffdd7a1578f94c501d3c0b6b8f4f.png

7:首先验证Mycat读写分离,由此先将balance 设置为3,writetype设置为0,先注释掉第二个writeHost。

84c83c91e821a271908c188da7f1afb4.png

f44a246ef63f44c2903bdd19178996fc.png

先执行如下查询语句,获取此条结果后,

94179e1d04c8f7c2865bf74ec6ade07d.png

然后打开mycat logs目录下的mycat.log文件,可以看到如下内容;

5dca293a74a4e3e2843365c6f632277c.png

由上图可以验证,查询的路由是发送到192.168.10.37(从服务器)完成的。

然后执行如下插入语句;

0608c4881477351f9025039f7a081a49.png

然后再次打开mycat logs目录下的mycat.log文件,可以看到如下内容;

639d849c0490c212109ecf6a922d9ad8.png

由上图可以看到插入语句的路由是发送到192.168.10.36(主服务器)完成的!

至此,可以验证Mycat的读写分离已经实现!

8:验证Mycat自动切换功能

修改schema.xml内容如下图所示:

f0e7daca2090cfde08f61d963bd02ea7.png

修改完成后重启mycat!

此时执行插入语句如下图:

32c5081e83177908959dab3d6dc0fca1.png

再次打开日志文件,可以看到(如下图)插入语句还是在192.168.10.36(主服务器)上执行;

2f0ceb757d0463ba68266d0b5e1f6e30.png

此时我们将192.168.10.36的mysql服务给关闭!,文件会打印报错信息,如下图所示;

91e8004ae12f3a68db968b39f80c90c6.png

此时我们再此执行一条插入语句:

cd9e4bee11617f6943a55dc953b0d511.png

再次打开日志文件,如下图所示:

5dcb0b8548503bce15b2d8c6044db479.png

由此可以看出,此时插入语句是路由到192.168.10.37(从服务器)完成的!另外我们也可以登陆到192.168.10.37的mysql的db_test3库中进行验证(如下图):

037a55cc79eef4a35622b2fc60177b51.png

由此Mycat的自动切换功能验证成功!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值