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等
instanceTypeREAD_WRITE / READ / WRITE
maxCon / minCon连接池大小
idleTimeout空闲超时(毫秒)
weight负载均衡权重,0表示不参与
type连接类型: JDBC / NATIVE

2. 集群配置 (cluster.json)

2.1 复制类型 (replicaType)

类型说明
MASTER_SLAVE主从复制,支持读写分离
GARELA_CLUSTERGalera/PXC/MySQL Group Replication
SINGLE_NODE单节点
MHAMHA方案
MGRMySQL 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格式更加简洁。支持运行时动态加载,无需重启。