MyCat教程四:实现读写分离

本文咱们来给你们介绍下经过MyCat来实现MySQL的读写分离操做mysql


MyCat读写分离

1、读写分离配置

  前面咱们已经介绍过了mysql的主从同步和mycat的安装及相关配置文件的介绍,如今咱们来配置下具体的读写分离操做。程序员

1.1 建立物理表

  咱们如今master库中建立一张t_user表,由于主从的关系,slave中也会同步建立该表。
在这里插入图片描述sql

1.1 schema.xml配置

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
	<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">
		<table name="t_user" primaryKey="ID" type="global" dataNode="dn1" />
	</schema>
	<dataNode name="dn1" dataHost="localhost1" database="demo1" />
	<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
		<heartbeat>select user()</heartbeat>
		<writeHost host="hostM1" url="192.168.88.180:3306" user="root" password="123456">
			<readHost host="hostS2" url="192.168.88.181:3306" user="root" password="123456" />
		</writeHost>
	</dataHost>
</mycat:schema>

  
  
  

 
复制代码

注意数据库

  1. schema中的name TESTDB 没变
  2. table中的是逻辑表的名称,因此和物理表同名’t_user’
  3. dataNode中的database表示的是物理数据库名称demo1
  4. balance的值要设置为1不然查询会读取不到从库的数据
  5. writeHost中的url表示库的地址
  6. readHost表示配置读库的信息
  7. user属性对应的应该是server.xml中配置的帐号
balance的值 描述
0 不开启读写分离机制,全部读操做都发送到当前可用的 writeHost 上
1 所有的 readHost 与 stand by writeHost(分库中没有参与写操做的) 参与 select 语句的负载均衡
2 全部读操做都随机的在 writeHost、 readhost 上分发。
3 全部读请求随机的分发到 writeHost 对应的 readhost 执行,writerHost 不负担读压力

1.2 server.xml配置

  本案例中server.xml文件不须要修改,若是在schema.xml中中将TESTDB修改了那么在server.xml文件中对应的也须要修改后端

1.3 rule.xml配置

  在读写分离中不须要修改rule.xml文件微信

2、MyCat启动

  经过前面的介绍咱们已经安装好了MyCat,如今咱们先启动MyCat,MyCat的启动脚本位于bin目录下,经常使用的命令负载均衡

操做 命令
启动 ./bin/mycat start
中止 ./bin/mycat stop
重启 ./bin/mycat restart
查询状态 ./bin/mycat status

在这里插入图片描述

3、测试读写分离

3.1 客户端链接MyCat

  咱们能够经过客户端来链接MyCat操做,客户端能够是Navicat或者DataGrip,本文经过Navicat来链接,注意链接的端口为8066前后端分离

在这里插入图片描述
在这里插入图片描述

3.2 写数据测试

  咱们经过mycat链接来执行insert语句,来查看是否会写入到物理库中。微服务

在这里插入图片描述

如上,经过对MyCat的逻辑库的写操做,真实的写入到了物理库中。测试

3.3 读数据测试

  接下来咱们看下操做,为了演示读操做,咱们直接在slave中手动插入一条数据,这样主库和从库中的数据就不同了,这时咱们经过MyCat来查询数据,经过查询的结果就能判断出查询的数据究竟是哪一个库的数据了。具体操做以下:

在这里插入图片描述

经过上面的演示验证了咱们经过MyCat配置的读写分离是成功的!

好了本文到此,下篇咱们介绍MyCat的分库分表操做。



关注微信公众号【程序员的梦想】,专一于Java,SpringBoot,SpringCloud,微服务,Docker以及先后端分离等全栈技术。

在这里插入图片描述
相关文章
相关标签/搜索