mycat 1.6实现读写分离

使用mysql的root账号执行
mysql>grant all privileges on *.* to mycatuser@% identified by '123456';
mysql>flush privileges;
#vi /usr/local/mycat/conf/server.xml

<user name="mycatuser">
<property name="password">123456</property>
<property name="schemas">BALANCE</property>
</user>

#vi /usr/local/mycat/conf/schema.xml
<schema name="BALANCE" checkSQLschema="false" sqlMaxLimit="100">
<table name="travelrecord" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" />
</schema>

<dataNode name="dn1" dataHost="localhost1" database="db1" />
<dataNode name="dn2" dataHost="localhost1" database="db2" />
<dataNode name="dn3" dataHost="localhost1" database="db3" />

<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
writeType="0" dbType="mysql" dbDriver="native" switchType="-1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="hostM1" url="localhost:3306" user="root"
password="123456">
<!-- can have multi read hosts -->
<readHost host="hostS2" url="192.168.1.106:3306" user="root" password="123456" />
</writeHost>
</dataHost>

schema:mycat的逻辑数据库

dataNode:节点

dataHost:节点对应的读库写库的地址和连接

balance="1" :实现读写分离

dbDriver="native" :表示使用什么方式连接mysql,这里采用mysql的协议进行连接,可以选择jdbc,这时候就需要把java的mysql驱动包放到mycat的lib目录下面,否则不能连接mysql

测试:
关闭主从同步stop ,登录从库执行stop slave;
把从库的数据修改一下:
从原来的Victor1改为
Victor11
select * from travelrecord where id=1;
发现查询的是从库的数据

update travelrecord set user_id='Victor11 hello' WHERE id=1;

发现主库的记录被修改成了Victor11 hello。而从库没变,还是原来的Victor11。


测试结束:
登录从库执行start slave;
mysql>show slave status\G
恢复主从同步

posted @ 2020-05-25 13:27  tochenwei  阅读(107)  评论(0编辑  收藏  举报