搭建读写分离,前提是安装了mycat2和搭建了mysql主从复制(两台服务器,一主一从)
搭建主从复制可以参考我的这篇帖子 centos7安装mysql8主从复制_义明的博客-CSDN博客
安装mycat2可以参考我的这篇帖子centos7下安装mycat2_义明的博客-CSDN博客
进入mycat bin目录下
我的mycat是安装在这个目录下 /usr/local/mycat2/mycat/bin ,你们跳转到你们对应的目录下
cd /usr/local/mycat2/mycat/bin
启动 mycat
./mycat start
通过 navicat 连接 mycat,和连接 mysql 一样
连接成功后,创建逻辑库
create database mydb1;
注意:逻辑库名称必须和物理数据库名称一致,我之前就因为名称不一致,导致后面测试失败
进入mycat conf/schemas 目录下,就会发现多了 逻辑库名.schema.json 文件,这就是你的逻辑库配置文件,编辑该文件
vim mydb1.schema.json
添加 "targetName":"xxxx", 集群名称
"targetName":"mycatdb1Cluster",
添加完,保存退出
逻辑库创建好后,我们为该逻辑库创建主从数据源
在 navicat 下 执行以下命令:
#创建主库数据源
/*+ mycat:createDataSource{"name":"mycatdb1Write","url":"jdbc:mysql://192.168.168.224:3306/mydb1?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8","user":"root","password":"123456"} */
#创建从库数据源
/*+ mycat:createDataSource {"name":"mycatdb1Read","url":"jdbc:mysql://192.168.168.225:3306/mydb1?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8","user":"root","password":"123456"} */
查看主从数据库是否创建成功
/*+ mycat:showDataSources{} */
进入 mycat conf/datasources 目录下,查看mycat自动为我们生成数据源文件
#创建集群信息,引用上面创建的主从数据源
/*! mycat:createCluster{"name":"mycatdb1Cluster","masters":["mycatdb1Write"],"replicas":["mycatdb1Read"]} */
查看集群信息
/*+ mycat:showClusters{} */
在主库创建user表
CREATE TABLE `user` (
`id` int(0) NOT NULL AUTO_INCREMENT,
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
#人为造成主从数据不一致,方便观察读写分离现象
INSERT into user (name) values(@@hostname)
连接 mycat 执行以下 sql
select * from mydb1.user