Mycat2 配置指南
配置文件层次结构
conf/
├── datasources/
│ └── prototypeDs.datasource.json # 数据源配置
├── clusters/
│ └── prototype.cluster.json # 集群配置
├── schemas/
│ └── db1.schema.json # Schema配置
└── sequences/
└── travelrecord.sequence.json # 序列配置
1. 数据源配置 (datasource.json)
{
"dbType": "mysql",
"idleTimeout": 60000,
"initSqls": ["SET NAMES utf8mb4"],
"initSqlsGetConnection": true,
"instanceType": "READ_WRITE",
"maxCon": 1000,
"maxConnectTimeout": 3000,
"maxRetryCount": 5,
"minCon": 1,
"name": "prototypeDs",
"password": "123456",
"type": "JDBC",
"url": "jdbc:mysql://127.0.0.1:3306/db1?useUnicode=true&serverTimezone=UTC",
"user": "root",
"weight": 0
}
| 参数 | 说明 |
| dbType | 数据库类型: mysql, mongodb等 |
| instanceType | READ_WRITE / READ / WRITE |
| maxCon / minCon | 连接池大小 |
| idleTimeout | 空闲超时(毫秒) |
| weight | 负载均衡权重,0表示不参与 |
| type | 连接类型: JDBC / NATIVE |
2. 集群配置 (cluster.json)
2.1 复制类型 (replicaType)
| 类型 | 说明 |
| MASTER_SLAVE | 主从复制,支持读写分离 |
| GARELA_CLUSTER | Galera/PXC/MySQL Group Replication |
| SINGLE_NODE | 单节点 |
| MHA | MHA方案 |
| MGR | MySQL Group Replication |
{
"clusterType": "MASTER_SLAVE",
"heartbeat": {
"heartbeatTimeout": 1000,
"maxRetry": 3,
"minSwitchTimeInterval": 300
},
"masters": ["prototypeDs"],
"replicas": ["readDs1", "readDs2"],
"maxCon": 2000,
"name": "prototype",
"readBalanceType": "BALANCE_ALL",
"switchType": "SWITCH"
}
2.2 负载均衡类型 (readBalanceType)
| 类型 | 说明 |
| BALANCE_ALL | 所有读节点参与负载均衡 |
| BALANCE_ALL_READ | 所有读节点读,写只发主 |
| BALANCE_READ_ONLY | 只有读节点读 |
| BALANCE_NONE | 不负载均衡 |
3. Schema配置
3.1 DB_IN_ONE_SERVER (单物理库,适合读写分离)
{
"schemaName": "db1",
"defaultDataNode": "dn1",
"schemaType": "DB_IN_ONE_SERVER",
"dataNodes": [{
"name": "dn1",
"database": "db1",
"replica": "prototype"
}],
"tables": {}
}
3.2 DB_IN_MULTI_SERVER (多物理库聚合)
{
"schemaName": "db1",
"schemaType": "DB_IN_MULTI_SERVER",
"dataNodes": [
{"name": "dn1", "database": "db1", "replica": "prototype"},
{"name": "dn2", "database": "db2", "replica": "prototype"}
],
"tables": {
"travelrecord": {"dataNodes": "dn1"},
"travelrecord2": {"dataNodes": "dn2"}
}
}
3.3 ANNOTATION_ROUTE (注解路由)
{
"schemaType": "ANNOTATION_ROUTE",
"tables": {}
}
# 通过SQL注释指定路由:
/* mycat:targets=dn1 */ SELECT * FROM travelrecord;
4. 用户配置
{
"users": [{
"username": "root",
"password": "123456",
"ip": null,
"transactionType": "xa",
"schemas": ["db1", "db2"]
}]
}
| 参数 | 说明 |
| username | 用户名 |
| password | 密码 |
| ip | 允许的IP,null表示不限制 |
| transactionType | 事务类型: proxy / xa |
| schemas | 允许访问的逻辑库列表 |
提示: Mycat2配置采用JSON格式,相比Mycat1.6的XML格式更加简洁。支持运行时动态加载,无需重启。