官网地址:http://www.mycat.org.cn/
场景
10.4.7.100 mysql-master
10.4.7.101 mysql-slave
10.4.7.102 mycat
Mysql主从部署
略
Mycat部署
下载相关软件包
http://dl.mycat.org.cn/2.0/1.21-release/mycat2-1.21-release-jar-with-dependencies.jar
http://dl.mycat.org.cn/2.0/install-template/mycat2-install-template-1.21.zip
安装jdk
已有的略过即可
解压软件包
cd /data/soft
unzip mycat2-install-template-1.21.zip
mv mycat /data/
cp mycat2-1.21-release-jar-with-dependencies.jar /data/mycat/lib/
修改自带数据源
cd /data/mycat/conf/datasources
vim prototypeDs.datasource.json
配置文件内容如下:
{
"dbType":"mysql",
"idleTimeout":60000,
"initSqls":[],
"initSqlsGetConnection":true,
"instanceType":"READ_WRITE",
"maxCon":1000,
"maxConnectTimeout":3000,
"maxRetryCount":5,
"minCon":1,
"name":"prototypeDs",
"password":"1qaz@wsx?Z",
"type":"JDBC",
"url":"jdbc:mysql://10.4.7.100:3306/mysql?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8",
"user":"root",
"weight":0
}
修改server配置
主要修改内容为添加"serverVersion":"5.7.40-mycat-2.0",根据自己的服务器版本进行修改
{
"loadBalance":{
"defaultLoadBalance":"BalanceRandom",
"loadBalances":[]
},
"mode":"local",
"properties":{},
"server":{
"bufferPool":{
},
"idleTimer":{
"initialDelay":3,
"period":60000,
"timeUnit":"SECONDS"
},
"ip":"0.0.0.0",
"mycatId":1,
"port":8066,
"serverVersion":"5.7.40-mycat-2.0",
"reactorNumber":8,
"tempDirectory":null,
"timeWorkerPool":{
"corePoolSize":0,
"keepAliveTime":1,
"maxPendingLimit":65535,
"maxPoolSize":2,
"taskTimeout":5,
"timeUnit":"MINUTES"
},
"workerPool":{
"corePoolSize":1,
"keepAliveTime":1,
"maxPendingLimit":65535,
"maxPoolSize":1024,
"taskTimeout":5,
"timeUnit":"MINUTES"
}
}
}
配置mycat用户
{
"dialect":"mysql",
"ip":null,
"password":"mycat@123",
"transactionType":"proxy",
"username":"root"
}
启动mycat
cd /data/mycat/bin/
chmod +x ./*
./mycat start
测试连接
这个时候我们是看不到我们配置的数据库
创建逻辑数据库
创建数据源
cd /data/mycat/conf/datasources
cp prototypeDs.datasource.json m7-100-a1.datasource.json
cp prototypeDs.datasource.json s7-101-a1.datasource.json
配置说明
配置文件名称:
m7-100-a1.datasource.json:master 10.4.7.100 a1库
s7-101-a1.datasource.json:slave 10.4.7.101 a1库
根据自己的需求进行配置,名称格式为:数据源名称.datasource.json
- name:数据源名称,要全局唯一,后面配置集群时会用到这个名称
- url:数据库连接字符串,根据自己的环境配置即可
- maxConnectTimeout:单位millis,配置中的定时器主要作用是定时检查闲置连接
- initSqlsGetConnection:true|false,默认:false,对于jdbc每次获取连接是否都执行initSqls
- type:数据源类型,没有必要不要使用NATIVE
- JDBC,默认,只使用JDBC驱动连接
- NATIVE_JDBC,该数据源同一个配置同时可以使用NATIVE,JDBC
- NATIVE,只使用NATIVE协议(即Mycat自研的连接MySQL的协议)
- queryTimeout:jdbc查询超时时间 默认不超时(1.20,以及早期1.21默认30mills)
- instanceType:配置实例只读还是读写,读节点可以设置为READ,可选参数:READ_WRITE、READ、WRITE,在集群中,是READ_WRITE的类型,被设置到replicas,对该集群是READ的,但是它也被设置到masters则为READ_WRITE,这个属性要配合集群的负载均衡使用
- weight:负载均衡特定用的权重
数据源配置文件内容
- m7-100-a1.datasource.json
{
"dbType":"mysql",
"idleTimeout":60000,
"initSqls":[],
"initSqlsGetConnection":true,
"instanceType":"READ_WRITE",
"maxCon":1000,
"maxConnectTimeout":3000,
"maxRetryCount":5,
"minCon":1,
"name":"m7-100-a1",
"password":"1qaz@wsx?Z",
"type":"JDBC",
"url":"jdbc:mysql://10.4.7.100:3306/test_sync_a1?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8",
"user":"root",
"weight":0
}
- s7-101-a1.datasource.json
{
"dbType":"mysql",
"idleTimeout":60000,
"initSqls":[],
"initSqlsGetConnection":true,
"instanceType":"READ",
"maxCon":1000,
"maxConnectTimeout":3000,
"maxRetryCount":5,
"minCon":1,
"name":"s7-101-a1",
"password":"1qaz@wsx?Z",
"type":"JDBC",
"url":"jdbc:mysql://10.4.7.101:3306/test_sync_a1?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8",
"user":"root",
"weight":0
}
配置schemas
配置文件位置:/data/mycat/conf/schemas
修改配置文件test_sync_a1.schema.json
配置文件完整内容如下:
{
"customTables":{},
"globalTables":{},
"normalProcedures":{},
"normalTables":{},
"schemaName":"test_sync_a1",
"targetName":"test_sync_a1_cluster",
"shardingTables":{},
"views":{}
}
targetName:目标集群名称,要和下面配置的cluster集群名称一致
配置cluster
配置说明
配置文件目录:/data/mycat/conf/clusters
cluster配置文件格式为:{集群名称}.cluster.json
- clusterType:集群类型
配置选项:
- SINGLE_NODE:单一节点
- MASTER_SLAVE:普通主从
- GARELA_CLUSTER:garela cluster/PXC集群
- MHA:1.21-2022年1月完善
- MGR:1.21-2022年1月完善,MIC集群可以使用此配置
- readBalanceType :查询负载均衡策略
配置选项:
- BALANCE_ALL(默认值):获取集群中所有数据源
- BALANCE_ALL_READ:获取集群中允许读的数据源
- BALANCE_READ_WRITE:获取集群中允许读写的数据源,但允许读的数据源优先
- BALANCE_NONE:获取集群中允许写数据源,即主节点中选择
- switchType:切换类型
- NOT_SWITCH:不进行主从切换
- SWITCH:进行主从切换
集群配置文件内容
新建配置文件:test_sync_a1_cluster.cluster.json
{
"clusterType":"MASTER_SLAVE",
"heartbeat":{
"heartbeatTimeout":1000,
"maxRetry":3,
"minSwitchTimeInterval":300,
"slaveThreshold":0
},
"masters":[
"m7-100-a1"
],
"replicas":[
"s7-101-a1"
],
"maxCon":200,
"name":"test_sync_a1_cluster",
"readBalanceType":"BALANCE_ALL",
"switchType":"SWITCH"
}
重启mycat
/data/mycat/bin/mycat restart
连接测试
可以发现现在已经可以看到相关表
读写分离测试
略