微实验:MyCat实践(完结篇)

5、读写分离

实验目的:分离对数据的读操作和写操作,互不干扰。
schema.xml中 <dataHost />标签里的balance字段用于配置读写分离,balance的取值范围是[0,3],默认值是0,表示不开启读写分离机制,读请求只分发到writeHost上。开启读写分离机制可将值修改为1,读请求会随机分发到当前writeHost对应的readHost和 standby writeHost(备用主机)上。

5.1、准备工作:

(1)、将balance的值修改为1,读请求会随机分发到S1(读主机)和M2(备用写主机)上,重启mycat服务:

cd /usr/local/mycat/bin/
./mycat restart

(2)、保证S1和M2都能被远程连接。
(3)、为方便在mycat的日志中查看分发情况,需要更改log4j.xml的配置,将<level />标签中的value字段的值改为debug:

vi /usr/local/mycat/conf/log4j.xml

5.2、数据测试

连接mycat进行多次查询,观察分发情况:

mysql -utest -ptest -h127.0.0.1 -P8066 -DTESTDB 
select * from travelrecord limit 4; # 第一次查询
select * from travelrecord limit 4; # 第二次查询 
select * from travelrecord limit 4; # 第三次查询 

第一次查询将请求分发到了从主机(S1)上,即结果全部来自于S1上的数据库:


第一次查询

第二次查询将请求分发到了备用主机(M2)上,即结果全部来自于M2上的数据库:


第二次查询

第三查询将请求分发到了从主机(S1)和备用主机(M2)上,即结果分别来自于S1和M2上的表数据:
第三次查询

6、主备切换

实验目的:当主服务器(M1)出现MySQL服务失效时能自动切换到备用服务器(M2)。
schema.xml中 <dataHost />标签里的switchType字段用于配置切换效果,switchType的取值:-1、1、2、3,默认值是-1,表示不自动切换主备数据库。自动切换主备数据库可将值修改为1。

6.1、修改配置文件

编辑schema.xml(新增一个writeHost标签):

<writeHost host="M1" url="localhost:3306" user="root" password="123456">
    <readHost host="S1" url="192.168.0.4:3306" user="root" password="123456" />
</writeHost>
<writeHost host="M2" url="192.168.0.7:3306" user="root" password="123456">
</writeHost>

6.2、准备工作

(1)、将switchType的值修改为1并重启mycat服务:

cd /usr/local/mycat/bin/
./mycat restart

(2)、保证M1和M2都能被远程连接。

6.3、数据测试

当M1和M2的MySQL服务均正常时,通过mycat插入数据默认是写到M1的。
关闭M1的MySQL服务来模拟失效情况:

systemctl stop mysqld.service

连接mycat并插入数据:

mysql -utest -ptest -h127.0.0.1 -P8066 -DTESTDB
insert into travelrecord(id,price,create_date)  values(null,2500,'2019-01-16');

实验预期结果:数据成功写入到了M2上的数据库。
注意:开启M1上的MySQL服务,写入数据并不会写入到M1上的数据库,因为此时主节点是M2,M1需要等待M2的MySQL服务失效才能自动升级为主节点。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容