1.创建逻辑库
登录mycat,执行建库命令创建一个逻辑库
CREATE DATABASE mydb1;
2.配置数据源
创建完成后,在mycat/conf/schemas下会生成一个逻辑库的json文件
编辑这个json文件
vi mydb1.schema.json
加入下面这行配置
# 逻辑库的目标为原型数据库
"targetName":"prototype"
添加数据源,执行下面语句添加数据源,也可以在mycat/datasources目录下添加配置数据源文件,这里为了方便,直接用注释的方式添加也可以
/*+ mycat:createDataSource{"name":"rwSepw","url":"jdbc:mysql://192.168.50.128:3306/mydb1?useSSL=false&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true","user":"root","password":"123456"} */
/*+ mycat:createDataSource{"name":"rwSepr","url":"jdbc:mysql://192.168.50.129:3306/mydb1?useSSL=false&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true","user":"root","password":"123456"} */
检查是否配置成功
/*+ mycat:showDataSources{} */
3.配置集群
执行下面语句,将刚刚配置的主从数据源填进去
/*! mycat:createCluster{"name":"prototype","masters":["rwSepw"],"replicas":["rwSepr"]} */
检查是否配置成功
/*+ mycat:showClusters{} */
此时,打开/usr/local/mycat/conf/clusters目录下的prototype.cluster.json文件,也可以看到配置的集群信息
vi /usr/local/mycat/conf/clusters/prototype.cluster.json
其中readBalanceType表示负载规则:
BALANCE_ALL:集群中所有数据源都参与读数据的负载
BALANCE_ALL_READ:集群中所有可读的数据源参与读数据的负载
BALANCE_READ_WRITE:集群中写的数据源也参与读数据的负载,但读的数据源优先
BALANCE_NONE:不负载,从写的数据源中选择
配置完成后,重启mycat
./mycat restart
4.测试
打开mycat的逻辑库mydb1,执行
select * from user;
为了分辨查询是否读写分离,我们往逻辑库中插入下面这行数据,mycat会到主库去执行写命令,当从库复制过去时,因为hostname不一样,实际从库的name字段的值和主库也会不一样
# 在mycat的逻辑库中执行下面语句,往主库写数据,让从库复制过去
insert into user(name) values(@@hostname)
分别查看主库和从库的数据
主库
从库
再查询mycat的逻辑库mydb1
多次查询,会发现查询出来的结果是不一样的,说明它是从不同数据源上进行的查询