MySQL【高可用篇】04:通过MyCAT实现MySQL8.0.25读写分离
·
一、环境准备
1、环境信息
192.168.201.161 主库
192.168.201.162 从库
192.168.201.163 mycat
192.168.201.164 客户端

2、架构图

3、主从复制搭建
参考
可参考:
第四阶段【MySQL数据库:主从复制】20:使用AI工具编写基于GTID主从复制的自动部署脚本并测试验证


4、客户端安装mysql
在164节点进行安装mysql,可参考:
Linux环境使用脚本自动安装MySQL8.0.25版本数据库
二、部署MyCAT
1、安装JDK
在163库,单机库安装jdk
yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel -y
java -version

2、下载安装MyCAT
网盘下载地址
链接: https://pan.baidu.com/s/1XjY-nZuD5s3fY1S6r2M8tw?pwd=r5rb
提取码: r5rb

cd /usr/src
unzip mycat2-install-template-1.21.zip
cd mycat/lib/
mv /usr/src/mycat2-1.21-release-jar-with-dependencies.jar ./
mv /usr/src/mycat /usr/local

3、在MySQL中创建MyCAT的连接用户
在主库161执行
CREATE USER 'mycat_rw'@'%' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY 'admin';
GRANT all ON *.* TO 'mycat_rw'@'%';

4、创建一个用来给MyCAT连接的库
在主库161执行
create database mycat;

5、修改数据源配置文件
在163库执行
cd /usr/local/mycat/
vim conf/datasources/prototypeDs.datasource.json
修改MySQL相关配置
"password":"admin",
"type":"JDBC",
"url":"jdbc:mysql://192.168.201.161:3306/mycat?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8",
"user":"mycat_rw",

6、修改MyCAT的用户名密码
cd /usr/local/mycat/
vim conf/users/root.user.json
修改为如下内容
{
"dialect":"mysql",
"ip":null,
"password":"admin",
"transactionType":"proxy",
"username":"mycat"
}

7、启动MyCAT
(1)启动
cd /usr/local/mycat/
chmod +x ./bin/*
./bin/mycat start

(2)重启
cd /usr/local/mycat/
./bin/mycat restart

(3)关闭
cd /usr/local/mycat/
./bin/mycat stop

(4)查看状态
cd /usr/local/mycat/
./bin/mycat status

(5)日志文件
如果启动异常,查看日志文件
tail -100f /usr/local/mycat/logs/wrapper.log

8、登录MyCAT的数据访问端口
在164进行登录,164是客户端机器
注意,这里的地址是安装了mycat的那台,就是163节点
mysql -umycat -p'admin' -P8066 -h192.168.201.163

9、数据源相关配置【这些有兴趣可以了解下】
cd /usr/local/mycat
ll conf/

(1)服务相关配置
cd /usr/local/mycat/conf
vim server.json

(2)用户相关配置
cd /usr/local/mycat/conf
vim users/root.user.json

(3)事务类型
可以直接在mycat中查询事务类型
select @@transaction_policy;

也可以直接修改事务类型
select @@transaction_policy;
set transaction_policy='xa';
select @@transaction_policy;

(4)数据源相关配置
cd /usr/local/mycat
vim conf/datasources/prototypeDs.datasource.json

(5)逻辑库表的相关配置
cd /usr/local/mycat/conf
vim schemas/mysql.schema.json

(6)集群相关的配置文件
cd /usr/local/mycat/conf
vim clusters/prototype.cluster.json

三、读写分离配置
1、创建写库配置
在客户端164节点,进行连接登录到163库,就是安装了MyCAT的节点
mysql -umycat -p'admin' -P8066 -h192.168.201.163

执行如下命令,注意,将配置改成主库161的ip
/*+ mycat:createDataSource{
"name":"write",
"url":"jdbc:mysql://192.168.201.161:3306/?useSSL=false&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true",
"user":"mycat_rw",
"password":"admin"
} */;

2、创建读库的配置
注意,将配置改成从库162的ip
/*+ mycat:createDataSource{
"name":"read",
"url":"jdbc:mysql://192.168.201.162:3306/?useSSL=false&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true",
"user":"mycat_rw",
"password":"admin"
} */;

3、确定数据源是否配置成功
执行如下命令,确定是否创建成功
/*+ mycat:showDataSources{} */;


或者查看下配置文件,在163节点进行查看,因为mycat是部署在163节点
cd /usr/local/mycat/conf/datasources
ll

cat read.datasource.json

cat write.datasource.json

4、配置集群
在客户端节点,也就是164节点进行连接
mysql -umycat -p'admin' -P8066 -h192.168.201.163
然后执行:
/*! mycat:createCluster{"name":"RW","masters":["write"],"replicas":["read"]} */;
/*+ mycat:showClusters{} */;

5、配置逻辑库
在客户端节点,也就是164节点进行连接
mysql -umycat -p'admin' -P8066 -h192.168.201.163
创建数据库
create database test_rw;

编辑配置文件,在163节点进行配置
cd /usr/local/mycat/conf/schemas
ll

vim test_rw.schema.json
修改为如下:
{
"customTables":{},
"globalTables":{},
"normalProcedures":{},
"normalTables":{},
"schemaName":"test_rw",
"shardingTables":{},
"targetName":"RW",
"views":{}
}

6、重启MyCAT
163节点进行重启
/usr/local/mycat/bin/mycat restart
/usr/local/mycat/bin/mycat status

四、测试读写分离
在客户端节点进行连接测试
1、进行连接
mysql -umycat -p'admin' -P8066 -h192.168.201.163

2、写入数据
use test_rw;
create table t1(
id int not null auto_increment primary key,
name varchar(20)
);
insert into t1(name) values ('a');

3、查询数据
select *,@@server_id from t1;

更多推荐
所有评论(0)