一、前提条件
搭建读写分离,前提是安装了mycat2和搭建了mysql主从复制(两台服务器,一主一从)
搭建主从复制可以参考我的这篇帖子 centos7安装mysql8主从复制_义明的博客-优快云博客
安装mycat2可以参考我的这篇帖子centos7下安装mycat2_义明的博客-优快云博客
二、创建逻辑库
进入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
本教程详细介绍了如何在CentOS7上使用Mycat2搭建MySQL主从复制的读写分离环境。首先,确保已安装Mycat2并配置了MySQL主从服务器。接着,创建逻辑库,并编辑其schema.json文件添加目标集群名称。然后,通过Navicat创建主从数据源,并检查数据源是否创建成功。进一步,创建集群配置信息,引用主从数据源。最后,通过在主库上创建表并插入数据,验证读写分离功能。测试表明,当在主库进行写操作后,从库能正确实现读操作,实现了读写分离的目标。
569

被折叠的 条评论
为什么被折叠?



