1.修改配置文件
/usr/local/mycat/conf/schema.xml
usr/local/mycat/conf/server.xml
修改的balance属性,通过此属性配置读写分离的类型
负载均衡类型,目前的取值有4 种:
(1)balance="0", 不开启读写分离机制,所有读操作都发送到当前可用的writeHost 上。
(2)balance="1",全部的readHost 与stand by writeHost 参与select 语句的负载均衡,简单的说,当双主双从
模式(M1->S1,M2->S2,并且M1 与M2 互为主备),正常情况下,M2,S1,S2 都参与select语句的负载均衡。
(3)balance="2",所有读操作都随机的在writeHost、readhost 上分发。
(4)balance="3",所有读请求随机的分发到readhost 执行,writerHost 不负担读压力
为了双主双从读写分离balance设置为1
#balance="1": 全部的readHost与stand by writeHost参与select语句的负载均衡。
#writeType="0": 所有写操作发送到配置的第一个writeHost,第一个挂了切到还生存的第二个
#writeType="1",所有写操作都随机的发送到配置的writeHost,1.5 以后废弃不推荐
#writeHost,重新启动后以切换后的为准,切换记录在配置文件中:dnindex.properties 。
#switchType="1": 1 默认值,自动切换。
-1 表示不自动切换
2 基于MySQL 主从同步的状态决定是否切换。
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
</schema>
<dataNode name="dn1" dataHost="host1" database="copydb" />
<dataHost name="host1" maxCon="1000" minCon="10" balance="2"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM1" url="172.16.94.131:3306" user="root"
password="Zan_123456">
<readHost host="hostS1" url="172.16.94.132:3306" user="root" password="Zan_123456" />
</writeHost>
</dataHost>
</mycat:schema>
<user name="mycat" defaultAccount="true">
<property name="password">zan123456</property>
<property name="schemas">TESTDB</property>
</user>
2.重启mycat
3.登录mycat数据管理
[root@shuidi01 mysql]# mysql -umycat -pzan123456 -P 8066 -h 127.0.0.1
4.验证读写分离
#在写主机Master1数据库表mytb中插入带系统变量数据,造成主从数据不一致
mysql> INSERT INTO mytb VALUES(3,@@hostname);
Query OK, 1 row affected, 1 warning (0.01 sec)
5.mycat 的查询随机切换
ali-shuidi01只能查出 他自己的
ali-shuidi02只能查出 他自己的