MyCat2搭建mysql主从分离

前言

此次搭建MyCat2读写分离使用的Linux环境是Debian11.3,使用的mysql版本是8.0.16
在这里插入图片描述

1. 准备三台服务器

准备如下三台Debian服务器,而且这三台服务器之间能够相互通信,可以用ping命令测试,如下图所示,表示三台服务器之间通信正常,执行vim /etc/hostname命令修改162和163两台服务器的主机名分别为debian162,debian163,分别执行init 6重启,重启之后162和163的主机名分别为debian162,debian163,这个后面会用到,便于后面区分。

192.168.227.161     安装MyCat2
192.168.227.162      mysql主机,mysql8.0.16已安装
192.168.227.163      mysql从机,mysql8.0.16已安装

192.168.227.161 ping通 192.168.227.162和192.168.227.163
在这里插入图片描述
192.168.227.162 ping通 192.168.227.163和192.168.227.161
在这里插入图片描述
192.168.227.163 ping通 192.168.227.162和192.168.227.161
在这里插入图片描述

192.168.227.162和192.168.227.163已安装mysql8.0.16
在这里插入图片描述
在这里插入图片描述

2. 搭建MySQL主从复制

(1)修改主机MySQL的配置文件my.cnf,并执行/etc/init.d/mysql restart命令重启mysql服务,我这里mysql启动文件是放在/etc/init.d目录下
在这里插入图片描述
在这里插入图片描述

(2)修改从机MySQL的配置文件my.cnf,并执行/etc/init.d/mysql restart命令重启mysql服务,我这里mysql启动文件是放在/etc/init.d目录下
在这里插入图片描述
在这里插入图片描述
(3)进入主机mysql中执行授权

grant replication slave on  *.*  to 'root'@'%';

在这里插入图片描述
(4)给mysql从机配置mysql主机
在Mysql主机登录mysql,执行show master status查询主机MySQL的File和Position参数
在这里插入图片描述
然后登录从机mysql,执行以下命令

CHANGE MASTER TO
MASTER_HOST='192.168.227.162',
MASTER_PORT=3306,
MASTER_USER='root',
MASTER_PASSWORD='123456',
master_log_file='mysql-bin.000001',
master_log_pos=375;

在这里插入图片描述
(5)登录MySQL从机,执行start slave启动主从复制,执行show slave status\G查看,如下图所示主从复制启动成功
在这里插入图片描述

3. 安装并启动MyCat2

将Mycat2的安装压缩包上传至/opt目录下

mycat2-1.21-release-jar-with-dependencies.jar
mycat2-install-template-1.21.zip

首先执行unzip mycat2-install-template-1.21.zip 完成解压,然后将mycat2-1.21-release-jar-with-dependencies.jar移动到解压的mycat/lib目录下
在这里插入图片描述
修改mycat/conf/datasources目录下的prototypeDs.datasource.json配置文件,修改内容如下:
在这里插入图片描述
修改mycat/bin目录下的文件权限,否则会拒绝执行

chmod 755 ./*
在这里插入图片描述
进入到mycat/bin目录下执行./mycat start启动mycat,执行./mycat status查看启动状态,执行tail -f /opt/mycat/wrapper.log查看启动日志,如下表示启动成功。
在这里插入图片描述
用navicat登录mycat,和登录mysq一样,只是端口不一样,如下图所示
在这里插入图片描述
成功创建数据库mydb1
在这里插入图片描述
登录主机mysql和从机mysql看看
在这里插入图片描述

4. 添加读写分离配置

(1) 第一种方式:使用注解添加读写分离配置

创建
/*+ mycat:createDataSource{"name":"rwSepw", "url":"jdbc:mysql://192.168.227.162:3306/test?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8", "user":"root", "password":"123456"} */

/*+ mycat:createDataSource{"name":"rwSepr", "url":"jdbc:mysql://192.168.227.163:3306/test?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8", "user":"root", "password":"123456"} */

查询
/*+ mycat:showDataSources{} */

在这里插入图片描述
或者是第二种方式直接编辑配置文件来添加读写分离配置
编辑rwSepw.datasource.json文件,添加如下内容

{
        "dbType":"mysql",
        "idleTimeout":60000,
        "initSqls":[],
        "initSqlsGetConnection":true,
        "instanceType":"READ_WRITE",
        "logAbandoned":true,
        "maxCon":1000,
        "maxConnectTimeout":30000,
        "maxRetryCount":5,
        "minCon":1,
        "name":"rwSepw",
        "password":"123456",
        "queryTimeout":0,
        "removeAbandoned":false,
        "removeAbandonedTimeoutSecond":180,
        "type":"JDBC",
        "url":"jdbc:mysql://192.168.227.162:3306/test?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&autoReconnect=true",
        "user":"root",
        "weight":0
}

编辑rwSepr.datasource.json文件,添加如下内容

{
        "dbType":"mysql",
        "idleTimeout":60000,
        "initSqls":[],
        "initSqlsGetConnection":true,
        "instanceType":"READ_WRITE",
        "logAbandoned":true,
        "maxCon":1000,
        "maxConnectTimeout":30000,
        "maxRetryCount":5,
        "minCon":1,
        "name":"rwSepr",
        "password":"123456",
        "queryTimeout":0,
        "removeAbandoned":false,
        "removeAbandonedTimeoutSecond":180,
        "type":"JDBC",
        "url":"jdbc:mysql://192.168.227.163:3306/test?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&autoReconnect=true",
        "user":"root",
        "weight":0
}

效果和使用注解添加一样

(2) 使用注解添加集群配置
第一种

创建
/*+ mycat:createCluster{"name":"prototype", "masters":["rwSepw"], "replicas":["rwSepr"]} */
查看
/*+ mycat:showClusters{} */

或者是修改/opt/mycat/conf/clusters/prototype.cluster.json,添加如下内容

{
        "clusterType":"MASTER_SLAVE",
        "heartbeat":{
                "heartbeatTimeout":1000,
                "maxRetryCount":3,
                "minSwitchTimeInterval":300,
                "showLog":false,
                "slaveThreshold":0.0
        },
        "masters":[
                "rwSepw"
        ],
        "maxCon":2000,
        "name":"prototype",
        "readBalanceType":"BALANCE_ALL",
        "replicas":[
                "rwSepr"
        ],
        "switchType":"SWITCH"
}

在这里插入图片描述

最后重启mycat

 cd /opt/mycat/bin
 ./mycat restart

在这里插入图片描述

5. 测试MyCat2读写分离

我们可以这样测试:

首先创建一张test表
create table test(
id int,
hostname varchar(20)
);
在mycat执行SQL语句 insert into test(id, hostname) values(1, @@hostname);
在mysql从机执行SQL语句 insert into test(id, hostname) values(2, @@hostname);
最后在mycat执行select * from test;查看结果如下

第一次查询结果
在这里插入图片描述
第二次查询结果
在这里插入图片描述
从上面结果可以看到已经实现了读写分离。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

下雨天的太阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值