利用mycat读写分离
主库192.168.56.101,备库192.168.56.25.
3个数据库db1,db2,db3.主从同步见以前数据库目录。mysql
修改schema.xml
balance="0"
0:不开启读写分离机制,全部读操做都发送到当前可用的writeHost上
1:所有的readHost与stand by writeHost参与select语句的负载均衡,
2:全部读操做都随机在writeHost、readHost上分发
3:全部读请求随机分发到writeHost对应的readHost执行,writeHost不负担读压力sql
writeType="0" 0:全部写操做发送到配置的第一个writeHost,当第一个writeHost宕机时,切换到第二个writeHost,从新启动后以切换后的为准,切换记录在配置文件:dnindex.properties中 1:全部写操做都随发送到配置的writeHost switchType:切换方式
-1:不自动切换
1:自动切换(默认)
2:基于MySql主从同步的状态来决定是否切换数据库
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="2" 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.56.25:3306" user="root" password="123456" /> </writeHost> <writeHost host="hostS2" url="192.168.56.25:3306" user="root" password="123456" /> <!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> --> </dataHost>
关闭mycat
./mycat stop
开启mycat
./mycat start
mysql -uroot -p123456 -P8066 -h127.0.0.1 -DTESTDB
查看会写到哪一个库
explain insert into travelrecord(id,user_id,traveldate,fee,days) values(101,'lmkzxh',20160101,100,10);
insert into travelrecord(id,user_id,traveldate,fee,days) values(101,'lmkzxh',20160101,100,10);负载均衡
而后在从mysql看已经同步了。
more /root/mycat/logs/mycat.log 能够看到是写入在主mysql。
select * from travelrecord;
more /root/mycat/logs/mycat.log 能够看到是从备mysql。ide
关闭主mysql服务
service mysqld stopurl
写入数据成功,说明已经切换。
insert into travelrecord(id,user_id,traveldate,fee,days) values(1011,'ok',20160101,100,10);code