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