迁移到 Mycat3.0 (Mycat3)
迁移路径
Mycat1.6 ──▶ Mycat3 兼容模式 ──▶ 完整 Mycat3
│ │ │
│ (配置自动转换) (生产就绪)
│
Mycat2 ──▶ Mycat3 兼容模式 ──▶ 完整 Mycat3
从 Mycat1.6 迁移
1. 配置文件自动转换
Mycat3 提供配置转换工具,自动将 Mycat1.6 XML 配置转为 Mycat3 YAML 格式:
# 运行配置转换工具
bin/Mycat3 migrate --from mycat1 --source /path/to/mycat1/conf --target /path/to/Mycat3/conf
# Mycat1.6 XML -> Mycat3 YAML
# server.xml -> server.yaml
# schema.xml -> schema.yaml
# rule.xml -> rule.yaml
2. 转换示例
Mycat1.6 schema.xml:
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">
<table name="travelrecord" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" />
</schema>
转换后的 Mycat3 schema.yaml:
schema:
name: TESTDB
checkSQLschema: false
sqlMaxLimit: 100
tables:
- name: travelrecord
dataNodes: dn1,dn2,dn3
rule: auto-sharding-long
3. 迁移步骤
# 步骤1: 准备环境
- 安装 Mycat3 3.0
- 确认 MySQL 后端可用
# 步骤2: 配置转换
Mycat3 migrate --from mycat1 --source /etc/mycat/conf --target /etc/Mycat3/conf
# 步骤3: 兼容模式下启动
Mycat3 start --mode compatible --compatibleVersion mycat1.6
# 步骤4: 验证功能
- 连接测试 (端口 3306)
- 管理端口测试 (端口 9066)
- 执行关键业务SQL验证
# 步骤5: 切换到完整模式
Mycat3 start --mode native
从 Mycat2 迁移
配置转换
# Mycat2 JSON -> Mycat3 YAML
bin/Mycat3 migrate --from mycat2 --source /path/to/mycat2/conf --target /path/to/Mycat3/conf
API兼容性
| Mycat2 功能 | Mycat3 兼容情况 |
|---|---|
| Proxy透传 | 完全兼容 |
| 拦截器配置 | 兼容(自动转换) |
| 分布式查询 | 增强(支持AI优化) |
| XA事务 | 完全兼容 |
| 自定义分片算法 | 兼容(需重新编译) |
零停机迁移方案
1. 部署 Mycat3 集群(新端口)
│
2. 双写: 应用同时写 Mycat 和 Mycat3
│
3. 数据迁移: 将读流量逐步切到 Mycat3
│
4. 灰度切换: 10% → 50% → 100%
│
5. 监控观察: 确认无异常
│
6. 下线旧 Mycat 集群
重要: 迁移前务必在测试环境充分验证。生产迁移建议在业务低峰期进行,并准备好回滚方案。
提示: Mycat3 的兼容模式可以并行运行,支持逐步迁移。新特性(AI优化、云原生等)在完整模式下才能使用。