在前面双主双从的基础上,下面利用MyCat来进行双主双从的读写分离
配置集群
在MyCat中执行下面语句,给MyCat再配置一主一从的数据源,也就是前面搭建的130和131两台机器
/*+ mycat:createDataSource{"name":"rwSepw2","url":"jdbc:mysql://192.168.50.130:3306/mydb1?useSSL=false&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true","user":"root","password":"123456"} */
/*+ mycat:createDataSource{"name":"rwSepr2","url":"jdbc:mysql://192.168.50.131:3306/mydb1?useSSL=false&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true","user":"root","password":"123456"} */
检查是否配置成功
/*+ mycat:showDataSources{} */
修改集群配置
进入cluster目录
cd /usr/local/mycat/bin/clusters
编辑prototype.cluster.json
配置双主机写,双从机+备机读
...
"masters": [
"rwSepw","rwSepw2"
],
"replicas": [
"rwSepw2","rwSepr","rwSepr2"
]
...
重启MyCat
./mycat restart
测试验证
打开MyCat,在mydb1数据库上执行下面插入语句
insert into user(name) value(@@hostname)
检查四个数据库的user表情况
在执行一下查询语句
select * from user
多执行几次,可以看到请求实际上是在这四台机器上随机分发的,为什么在四台机器上随机而不是在三台提供读操作的机器上随机?因为我们集群的readBalanceType配置了BALANCE_ALL,从所有数据源中读,其他类型返回前面“MyCat读写分离”文章查看