4 个实用的 Mycat + MySQL 版本兼容性验证清单

清单 1:Mycat 1.6.x + MySQL 8.0 适配专项验证清单(解决高版本适配痛点)

专门针对 Mycat 1.6.x 连接 MySQL 8.0 的「驱动 / 认证 / 语法」核心适配问题,快速排查与验证。
验证项 操作步骤 预期结果 异常处理方案
驱动版本适配 `ls -l /usr/local/mycat/lib grep mysql-connector-java` 驱动版本 ≥8.0(如 8.0.33) 替换旧驱动:删除 5.x 版本,下载 8.0+ 驱动并重启 Mycat
认证方式修正 MySQL 执行:SELECT user,plugin FROM mysql.user WHERE user='mycat'; 插件为 mysql_native_password 执行 ALTER USER 'mycat'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; FLUSH PRIVILEGES;
8.0 新特性规避 Mycat 执行:SELECT id, ROW_NUMBER() OVER (ORDER BY id) AS rn FROM test_compat; 1.6.x 报错(正常),业务需时升级 Mycat 2.0.x 1. 业务避免用窗口函数;2. 直接连接 MySQL 执行新语法
数据包大小适配 Mycat 执行:INSERT INTO test_large (content) VALUES (REPEAT('a', 100000)); 无 PacketTooBigException 修改 Mycat server.xml 中 maxPacketSize=64M,MySQL 配置 max_allowed_packet=64M
驱动类名配置 检查 Mycat schema.xml 中 dataHost 的 driverClassName 1.6.x 需设为 com.mysql.cj.jdbc.Driver 替换旧驱动类名(旧版为 com.mysql.jdbc.Driver

清单 2:Mycat + MySQL 集群高可用(主从 / 双主)兼容性验证清单

验证集群架构下的读写分离、故障切换、数据一致性,适配生产高可用场景。
验证项 操作步骤 预期结果 异常处理方案
主从同步状态 MySQL 从库执行:show slave status\G Slave_IO_Running=Yes 且 Slave_SQL_Running=Yes 1. 检查主库 binlog 开启;2. 核对从库 master_log_file/master_log_pos
Mycat 读负载均衡 1. 开启从库通用日志;2. Mycat 执行 10 次 SELECT 1;;3. 查从库日志 读请求均匀分发到所有从库 调整 schema.xml 中 balance=1(读负载均衡)、writeType=0(写走主库)
主库故障切换 1. 停止主库 MySQL;2. Mycat 执行写操作;3. 查看 Mycat 日志 自动切换到备用主库,无写失败 配置 dataHost 的 switchType=1(自动切换),确保备用主库可写
双主数据一致性 双主库分别插入数据,Mycat 执行 SELECT * FROM test 双主数据同步,Mycat 聚合结果无冲突 1. 双主互为主从;2. 自增步长设为 2,起始值分别为 1/2
从库延迟检测 Mycat 管理端口执行:show @@datasource; 从库延迟(delay)≤1s 1. 优化主从同步参数;2. Mycat 配置 slaveThreshold=1000(延迟阈值)

清单 3:Mycat + MySQL 分布式事务(XA / 非 XA)兼容性验证清单

验证分布式事务的提交 / 回滚、数据一致性,适配金融 / 支付等高一致性场景。
验证项 操作步骤 预期结果 异常处理方案
XA 事务提交 Mycat 执行:SET autocommit=0; XA START 'xa1'; INSERT INTO test_tx VALUES (1, 'xa'); XA END 'xa1'; XA PREPARE 'xa1'; XA COMMIT 'xa1'; 事务提交成功,所有分片数据持久化 1. Mycat 1.6.5+ 支持 XA;2. MySQL 存储引擎为 InnoDB
XA 事务回滚 Mycat 执行:XA START 'xa2'; INSERT INTO test_tx VALUES (2, 'xa_rollback'); XA END 'xa2'; XA PREPARE 'xa2'; XA ROLLBACK 'xa2'; 所有分片无数据插入,回滚成功 检查 Mycat server.xml 中 defaultTxIsolation=3(可序列化)
非 XA 事务一致性 Mycat 执行:BEGIN; INSERT INTO dn1.test VALUES (1, 'tx'); INSERT INTO dn2.test VALUES (2, 'tx'); COMMIT; 两数据节点均插入成功 1. 关闭 MySQL 自动提交;2. Mycat 配置 txIsolation=2(读已提交)
事务超时验证 Mycat 执行长事务,触发超时(如 wait_timeout=30 事务自动回滚,无数据残留 调整 Mycat server.xml 中 txTimeout=60,MySQL 配置 wait_timeout=60

清单 4:Windows 环境 Mycat + MySQL 兼容性验证清单(适配 Windows 部署)

解决 Windows 下的路径、权限、服务启动等特殊兼容性问题。
验证项 操作步骤 预期结果 异常处理方案
路径无空格 / 中文 检查 Mycat 安装路径(如 D:\mycat 路径无空格、中文、特殊字符 迁移到纯英文路径(如 D:\mycat-1.6.7.6
端口占用排查 执行:`netstat -ano findstr "8066 9066 3306"` 8066/9066(Mycat)、3306(MySQL)无占用 关闭占用端口的进程,或修改 Mycat/MySQL 端口
服务启动权限 以管理员身份运行 mycat.bat start Mycat 服务正常启动,日志无权限报错 1. 授予 Mycat 目录读写权限;2. 关闭 Windows 防火墙
驱动路径适配 检查 D:\mycat\lib 中驱动版本 驱动版本与 MySQL 匹配(8.0+ 对应 MySQL 8.0) 替换驱动后,重启 Mycat 服务
命令行编码适配 连接 Mycat 执行:INSERT INTO test (name) VALUES ('中文测试'); SELECT * FROM test; 中文正常显示,无乱码 1. Mycat server.xml 设 charset=utf8mb4;2. MySQL 库表字符集为 utf8mb4

使用建议

  1. 先执行基础清单,再按业务场景选专项清单(如高版本 MySQL 用清单 1,集群用清单 2);
  2. 每项验证后记录「是否通过」,问题整改后复现验证,确保无遗漏;
  3. 生产环境建议在测试环境完成全量验证后,再灰度上线。
阅读剩余
THE END