MyCat 的配置文件
# 40.MyCat 的配置文件
MyCat2 的配置非常简单,甚至可以通过命令的方式来修改配置。
# MyCat 自身的配置(server)
和服务相关的配置:/usr/local/mycat/conf/server.json
,例如配置了端口号 8066,一些超时时间等,默认即可,这里不改动
# 用户(user)
主要是配置连接 MyCat 时的用户信息,文件所在地址 /usr/local/mycat/conf/users
:
ll /usr/local/mycat/conf/users
总用量 4
-rw-r--r--. 1 root root 107 6月 14 20:55 root.user.json
2
3
命名方式:{用户名}.user.json
,例如上面就是配置 root 用户。里面的内容 cat root.user.json
:
{
"dialect":"mysql",
"ip":null,
"password":"123456",
"transactionType":"xa",
"username":"root"
}
2
3
4
5
6
7
字段含义
ip:客户端访问
IP
,建议为空,填写后只接受该IP
的请求username:用户名
password:密码
transactionType:事务类型,可选值:
proxy 本地事务,在涉及大于 1 个数据库的事务,commit 阶段失败会导致不一致,但是兼容性最好
XA 事务,需要确认存储节点集群类型是否支持 XA
可以通过语句查询:
SELECT @@transaction_policy;
可以通过语句实现切换
set transaction_policy = 'xa'
set transaction_policy = 'proxy'
dialect:使用的数据库类型
isolation:可以加上这个设置,设置初始化的事务隔离级别。有如下取值:
READ_UNCOMMITTED:1 READ_COMMITTED:2 REPEATED_READ:3,默认 SERIALIZABLE:4
1
2
3
4
# 数据源(datasource)
配置 Mycat 连接的数据源信息,所在目录 mycat/conf/datasources
命名方式:{数据源名字}.datasource.json
,例如:
ll /usr/local/mycat/conf/datasources
总用量 4
-rw-r--r--. 1 root root 445 6月 14 21:46 prototypeDs.datasource.json
2
3
我们可以看看里面的内容 cat prototypeDs.datasource.json
:
{
"dbType":"mysql",
"idleTimeout":60000,
"initSqls":[],
"initSqlsGetConnection":true,
"instanceType":"READ_WRITE",
"maxCon":1000,
"maxConnectTimeout":3000,
"maxRetryCount":5,
"minCon":1,
"name":"prototypeDs",
"password":"learnMycatPassword0520@",
"type":"JDBC",
"url":"jdbc:mysql://localhost:3306/learnMycat?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8",
"user":"learnMycat",
"weight":0
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
其实我们在搭建环境的时候,已经配置过相关内容了。字段含义
dbType:数据库类型,例如 MySQL。一般来说 MyCat 对 MySQL 的兼容性最好
name:数据源名字,一般和文件名里的一样
user:用户名
password:密码
type:数据源类型,默认 JDBC
url:访问数据库地址
idleTimeout:空闲连接超时时间
initSqls:初始化 sql
initSqlsGetConnection:对于 jdbc 每次获取连接是否都执行 initSqls
instanceType:配置实例只读还是读写。可选值:READ_WRITE,READ,WRITE
weight :负载均衡权重
和连接相关的配置:
- "maxCon": 1000,最大连接数
- "minCon": 1,最小连接数
- "maxConnectTimeout": 3000,超时时间
- "maxRetryCount": 5,最大重试次数
以上这么多字段我们不用背,后续我们讲怎么新增数据源
# 集群(cluster)
所在目录 mycat/conf/clusters
,命名方式:{集群名字}.cluster.json
。例如:
ll /usr/local/mycat/conf/clusters/
总用量 4
-rw-r--r--. 1 root root 289 6月 14 20:55 prototype.cluster.json
2
3
里面的内容 cat prototype.cluster.json
:
{
"clusterType":"MASTER_SLAVE",
"heartbeat":{
"heartbeatTimeout":1000,
"maxRetry":3,
"minSwitchTimeInterval":300,
"slaveThreshold":0
},
"masters":[
"prototypeDs"
],
"maxCon":200,
"name":"prototype",
"readBalanceType":"BALANCE_ALL",
"switchType":"SWITCH"
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
可以配置的字段:
clusterType:集群类型,可选值:
- SINGLE_NODE:单一节点
- MASTER_SLAVE:普通主从
- GARELA_CLUSTER:PXC 集群
- MHA:MHA 集群
- MGR:MGR 集群
masters:配置主节点
replicas:配置从节点
readBalanceType:查询负载均衡策略,可选值:
- BALANCE_ALL(默认值),获取集群中所有数据源
- BALANCE_ALL_READ,获取集群中允许读的数据源
- BALANCE_READ_WRITE,获取集群中允许读写的数据源,但允许读的数据源优先
- BALANCE_NONE,获取集群中允许写数据源,即主节点中选择
switchType:切换类型,可选值:NOT_SWITCH 不进行主从切换,SWITCH 进行主从切换
# 逻辑库表(schema)
配置逻辑库表,实现分库分表,所在目录 mycat/conf/schemas
,命名方式:{库名}.schema.json
,例如:
ll /usr/local/mycat/conf/schemas/
总用量 8
-rw-r--r--. 1 root root 5299 6月 14 20:55 mysql.schema.json
2
3
里面的内容很多,这里就不列出全部了。数据库配置:
{
"schemaName": "mydb",
"targetName": "prototype"
}
2
3
4
字段含义:
- schemaName:逻辑库名
- targetName:目的数据源或集群。targetName 自动从 prototype 目标加载 test 库下的物理表或者视图作为单表, prototype 必须是 mysql 服务器
单表配置
{
"schemaName": "mysql-test",
"normalTables": {
"role_edges": {
"createTableSQL":null,//可选
"locality": {
"schemaName": "mysql",//物理库,可选
"tableName": "role_edges",//物理表,可选
"targetName": "prototype"//指向集群,或者数据源
}
}
}
.....
}
2
3
4
5
6
7
8
9
10
11
12
13
14
详细配置,后续讲分库分表时再说