Mycat2 快速开始

Mycat2 是 Mycat 社区开发的全新分布式关系型数据库中间件,支持分布式SQL查询,兼容MySQL通信协议,通过数据分片提高数据查询处理能力。

环境要求

组件要求
JDKJava 8
MySQLMySQL 5.7 / 8.0
操作系统Linux / Windows / Mac
内存建议 4GB 以上

第一步:配置用户

修改 conf/datasources/prototypeDs.datasource.json 中的用户名和密码:

{
  "users": [{
    "username": "root",
    "password": "123456",
    "ip": null,
    "transactionType": "xa",
    "schemas": ["test"]
  }]
}

第二步:配置数据源

创建 conf/datasources/xxx.datasource.json

{
  "dbType": "mysql",
  "idleTimeout": 60000,
  "initSqls": [],
  "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?useUnicode=true",
  "user": "root",
  "weight": 0
}

第三步:配置集群

创建 conf/clusters/prototype.cluster.json

{
  "clusterType": "MASTER_SLAVE",
  "heartbeat": {
    "heartbeatTimeout": 1000,
    "maxRetry": 3,
    "minSwitchTimeInterval": 300,
    "slaveThreshold": 0
  },
  "masters": ["prototypeDs"],
  "replicas": [],
  "maxCon": 2000,
  "name": "prototype",
  "readBalanceType": "BALANCE_ALL",
  "switchType": "SWITCH"
}

第四步:启动Mycat2

# Windows
cd mycat2/bin
startup_nowrap.bat

# Linux/Mac
cd mycat2/bin
./startup_nowrap.sh

# 查看日志确认启动
# 日志默认在 logs/mycat2.log

第五步:连接测试

# 默认端口 8066,默认无需密码登录
mysql -h127.0.0.1 -P8066 -uroot

# 创建数据库
mysql> CREATE DATABASE db1;
mysql> USE db1;

# 创建分片表
mysql> CREATE TABLE travelrecord (
    id BIGINT NOT NULL AUTO_INCREMENT,
    user_id VARCHAR(100),
    traveldate DATE,
    fee DECIMAL,
    days INT,
    PRIMARY KEY(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

# 插入数据
mysql> INSERT INTO travelrecord(id,user_id,traveldate,fee,days)
    VALUES(1,'user001','2026-01-15',100.5,3);

Mycat2 目录结构

mycat2/
├── bin/                  # 启动脚本
├── conf/                 # 配置文件目录
│   ├── datasources/      # 数据源配置
│   ├── clusters/         # 集群配置
│   ├── schemas/          # Schema配置
│   └── sequences/        # 序列配置
├── lib/                  # 依赖jar
└── logs/                 # 日志文件

配置拦截器(可选)

Mycat2 通过拦截器配置SQL的路由规则:

# conf/interceptors/xxx.yml
interceptor:
  defaultHandler: {command: execute, tags: {targets: prototype, forceProxy: true}}
  schemas:
    - tables: ['db1.travelrecord']
      sqls:
        - {sql: 'select {selectItems} from {any}', command: distributedQuery}
        - {sql: 'delete {any}', command: execute}
提示: Mycat2 测试版本默认无需账户密码即可登录。生产环境请务配置用户认证。
注意: Mycat2 要求MySQL后端已提前创建好物理表和数据库。Mycat2不会自动同步DDL。