本文我们来给大家介绍下通过MyCat来实现MySQL的读写分离操作

MyCat读写分离

一、读写分离配置

  前面我们已经介绍过了mysql的主从同步和mycat的安装及相关配置文件的介绍,现在我们来配置下具体的读写分离操作。

1.1 创建物理表

  我们现在master库中创建一张t_user表,因为主从的关系,slave中也会同步创建该表。

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文件

二、MyCat启动

  通过前面的介绍我们已经安装好了MyCat,现在我们先启动MyCat,MyCat的启动脚本位于bin目录下,常用的命令

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

三、测试读写分离

3.1 客户端连接MyCat

  我们可以通过客户端来连接MyCat操作,客户端可以是Navicat或者DataGrip,本文通过Navicat来连接,注意连接的端口为8066



3.2 写数据测试

  我们通过mycat连接来执行insert语句,来查看是否会写入到物理库中。

如上,通过对MyCat的逻辑库的写操作,真实的写入到了物理库中。

3.3 读数据测试

  接下来我们看下操作,为了演示读操作,我们直接在slave中手动插入一条数据,这样主库和从库中的数据就不一样了,这时我们通过MyCat来查询数据,通过查询的结果就能判断出查询的数据到底是哪个库的数据了。具体操作如下:

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


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

最新文章

  1. 虚拟机VMware与主机共享文件介绍
  2. hdu 5382 GCD?LCM!
  3. Windows服务器安装配置PHP7.0环境图文教程
  4. Linux 的cp命令详解
  5. SAP无损耗,FP前台和回写均有2%损耗
  6. Android Fresco (Facebook开源的图片加载管理库)
  7. JavaScript目录
  8. Server Tomcat v7.0 Server at localhost failed to start.错误可能原因之一
  9. 网络直播电视之M3U8解析篇 (下)
  10. 自定义TextView跑马灯
  11. 五.RabbitMQ之路由(Routing)和主题(topics)
  12. maven项目打包额外lib目录
  13. 程序员Web面试之前端框架等知识
  14. 【netcore入坑记】 .Net core UseRowNumberForPaging 分页报错 SQL Server 2008 R2 EntityFrameworkCore
  15. VS出现异常?!和十进制转二进制比是小事
  16. 3、利用GDB进行程序调试
  17. Win7中的路由转发配置实验
  18. 【Pyton】【小甲鱼】魔法方法
  19. iOS UI基础-4.1应用程序管理 字典转Model
  20. LINQ 模糊搜索

热门文章

  1. Rotor里的异常处理
  2. 表格插件BootStrap-Table使用教程
  3. C语言-memset()
  4. jquery根据选择器进行页面赋值,封装赋值方法
  5. 亿级Web系统搭建 Web负载均衡的几种实现方式(阿里)
  6. 软件工程1916|W(福州大学)_助教博客】个人总结作业(第12次)成绩公示
  7. Leetcode 5274. 停在原地的方案数
  8. vscode配合less的编译
  9. 聊一聊 JS 输出为 [object object] 是怎么回事?
  10. 收藏:png8和png24的根本区别