迁移到 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优化、云原生等)在完整模式下才能使用。