Mycat2 快速开始
Mycat2 是 Mycat 社区开发的全新分布式关系型数据库中间件,支持分布式SQL查询,兼容MySQL通信协议,通过数据分片提高数据查询处理能力。
环境要求
| 组件 | 要求 |
|---|---|
| JDK | Java 8 |
| MySQL | MySQL 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。