本文咱们来给你们介绍下经过MyCat来实现MySQL的读写分离操做mysql
前面咱们已经介绍过了mysql的主从同步和mycat的安装及相关配置文件的介绍,如今咱们来配置下具体的读写分离
操做。程序员
咱们如今master
库中建立一张t_user
表,由于主从的关系,slave
中也会同步建立该表。
sql
<?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> 复制代码
注意
:数据库
TESTDB
没变demo1
1
不然查询会读取不到从库的数据写
库的地址server.xml
中配置的帐号balance的值 | 描述 |
---|---|
0 | 不开启读写分离机制,全部读操做都发送到当前可用的 writeHost 上 |
1 | 所有的 readHost 与 stand by writeHost(分库中没有参与写操做的) 参与 select 语句的负载均衡 |
2 | 全部读操做都随机的在 writeHost、 readhost 上分发。 |
3 | 全部读请求随机的分发到 writeHost 对应的 readhost 执行,writerHost 不负担读压力 |
本案例中server.xml文件不须要修改,若是在schema.xml中中将TESTDB
修改了那么在server.xml文件中对应的也须要修改后端
在读写分离中不须要修改rule.xml文件微信
经过前面的介绍咱们已经安装好了MyCat,如今咱们先启动MyCat,MyCat的启动脚本位于bin
目录下,经常使用的命令负载均衡
操做 | 命令 |
---|---|
启动 | ./bin/mycat start |
中止 | ./bin/mycat stop |
重启 | ./bin/mycat restart |
查询状态 | ./bin/mycat status |
咱们能够经过客户端来链接MyCat操做,客户端能够是Navicat
或者DataGrip
,本文经过Navicat来链接,注意链接的端口为8066
前后端分离
咱们经过mycat链接来执行insert
语句,来查看是否会写入到物理库中。微服务
如上,经过对MyCat的逻辑库的写操做,真实的写入到了物理库中。测试
接下来咱们看下读
操做,为了演示读操做,咱们直接在slave
中手动插入一条数据,这样主库和从库中的数据就不同了,这时咱们经过MyCat来查询数据,经过查询的结果就能判断出查询的数据究竟是哪一个库的数据了。具体操做以下:
经过上面的演示验证了咱们经过MyCat配置的读写分离
是成功的!
好了本文到此,下篇咱们介绍MyCat的分库分表操做。