Mycat + MySQL 版本兼容性验证清单

该清单覆盖「环境基础检查、连接认证验证、核心功能验证、语法兼容性验证、故障兜底检查」五大维度,可直接落地执行,快速确认 Mycat 与 MySQL 版本是否适配,适配 CentOS/Linux 环境(Windows 可参考核心步骤,替换路径 / 命令即可)。

一、前置准备

检查项 操作步骤 预期结果
记录版本信息 1. Mycat 版本:/usr/local/mycat/bin/mycat version

2. MySQL 版本:mysql -V

明确 Mycat/MySQL 版本(如 Mycat 1.6.7.6 + MySQL 8.0.33)
确认 JDK 版本 java -version Mycat 1.6.x 需 JDK 8;Mycat 2.0.x 需 JDK 8/11
检查 Mycat 驱动版本 `ls -l /usr/local/mycat/lib grep mysql-connector-java` Mycat 1.6.x + MySQL 8.0 需驱动 ≥8.0;Mycat 2.0.x 无需手动改

二、基础连接与认证验证(核心第一步)

验证 Mycat 能否正常连接 MySQL,解决最常见的「认证方式不兼容」问题。
验证项 操作步骤 预期结果 异常处理方案
MySQL 账号认证方式 登录 MySQL 执行:

SELECT user,plugin FROM mysql.user WHERE user='mycat';

Mycat 1.6.x 需 plugin=mysql_native_password;Mycat 2.0.x 支持 caching_sha2_password 若为 caching_sha2_password(MySQL 8.0 默认):

1. Mycat 1.6.x:ALTER USER 'mycat'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

2. 刷新权限:FLUSH PRIVILEGES;

Mycat 连接 MySQL 用 Mycat 端口连接:

mysql -h127.0.0.1 -umycat_app -p123456 -P8066

成功进入 Mycat 命令行,无 认证失败 报错 报错 Client does not support authentication protocol

1. 替换 Mycat 驱动为 8.0+ 版本;

2. 调整 MySQL 账号认证方式

切换逻辑库 连接 Mycat 后执行:use mycat_db; 无报错,成功切换到逻辑库 报错 Unknown database:检查 schema.xml 中逻辑库名配置

三、核心功能兼容性验证(业务场景适配)

针对 Mycat 核心功能(DDL/DML、读写分离、分库分表、事务)验证,确保适配业务需求。

1. 基础 DDL/DML 操作(必验)

验证项 操作步骤(Mycat 命令行执行) 预期结果 异常处理方案
创建表 CREATE TABLE test_compat (id INT PRIMARY KEY, name VARCHAR(50), create_time DATETIME); 无报错,MySQL 真实库中同步创建该表 报错 Syntax error:检查 SQL 语法是否兼容 Mycat 版本
插入数据 INSERT INTO test_compat (id, name, create_time) VALUES (1, 'test1', NOW()), (2, 'test2', NOW()); 无报错,数据插入成功 报错 Duplicate key:检查主键自增配置;

报错 Connection refused:检查 MySQL 节点是否存活

查询数据 SELECT * FROM test_compat; 正常返回插入的 2 条数据 数据不全:检查 schema.xml 分片规则配置;

无数据:检查 MySQL 主从同步(读写分离场景)

更新 / 删除数据 UPDATE test_compat SET name='test1_update' WHERE id=1;

DELETE FROM test_compat WHERE id=2;

无报错,查询验证数据已更新 / 删除 报错 Table not found:检查 schema.xml 逻辑表与真实表映射
删除表 DROP TABLE test_compat; 无报错,MySQL 真实库中表被删除 报错 Permission denied:检查 MySQL 账号是否有 DROP 权限

2. 读写分离验证(若使用该功能)

验证项 操作步骤 预期结果 异常处理方案
主库写数据 1. Mycat 执行:INSERT INTO test_compat (id, name) VALUES (3, 'master_test');

2. 登录 MySQL 主库查询该表

主库中能查到该数据,从库同步(主从复制正常) 从库无数据:检查 MySQL 主从同步状态(show slave status\G
从库读数据 1. 开启 MySQL 从库通用日志:set global general_log=on;

2. Mycat 执行:SELECT * FROM test_compat;

3. 查看从库日志:select * from mysql.general_log where argument like '%test_compat%';

从库日志中有该 SELECT 操作记录,主库无 读请求仍走主库:

1. 检查 schema.xml 中 balance=1

2. 确认 readHost 配置正确

3. 分库分表验证(若使用该功能)

验证项 操作步骤 预期结果 异常处理方案
按分片规则插入数据 假设按 id 取模分 2 库,执行:

INSERT INTO user (id, name) VALUES (1, 'shard1'), (2, 'shard2'), (3, 'shard1'), (4, 'shard2');

id%2=0 存 dn1(db1),id%2=1 存 dn2(db2) 数据分布错误:检查 rule.xml 分片规则 count 与 dataNode 数量一致
聚合查询 Mycat 执行:SELECT * FROM user; 正常返回所有分片数据,无缺失 数据缺失:检查 schema.xml 中逻辑表 dataNode 配置

4. 事务兼容性验证

验证项 操作步骤 预期结果 异常处理方案
提交事务 BEGIN;

INSERT INTO test_compat (id, name) VALUES (5, 'tx_test');

COMMIT;

事务提交成功,数据持久化 报错 Transaction error:检查 Mycat 事务配置(server.xml 中 defaultTxIsolation
回滚事务 BEGIN;

INSERT INTO test_compat (id, name) VALUES (6, 'tx_rollback');

ROLLBACK;

SELECT * FROM test_compat WHERE id=6;

无该数据,事务回滚成功 回滚失败:检查 MySQL 存储引擎是否为 InnoDB(MyISAM 不支持事务)

四、SQL 语法兼容性验证(针对 MySQL 新特性)

验证 MySQL 高版本新语法是否被 Mycat 支持,避免业务 SQL 执行失败。
MySQL 语法特性 验证 SQL(Mycat 执行) Mycat 1.6.x 支持性 Mycat 2.0.x 支持性 异常处理方案
窗口函数(MySQL 8.0) SELECT id, name, ROW_NUMBER() OVER (ORDER BY id) AS rn FROM test_compat; 不支持(报错) 支持(正常返回结果) 业务需用该语法:升级 Mycat 到 2.0.x;或直接连接 MySQL 执行
JSON 类型操作 CREATE TABLE test_json (id INT, info JSON);

INSERT INTO test_json VALUES (1, '{"name":"test"}');

基础支持(创建 / 插入),复杂查询不支持 完全支持 复杂 JSON 查询失败:简化 SQL 或升级 Mycat
递归查询(WITH RECURSIVE) WITH RECURSIVE cte (n) AS (SELECT 1 UNION ALL SELECT n+1 FROM cte WHERE n<3) SELECT * FROM cte; 不支持(报错) 支持 业务需用:升级 Mycat 2.0.x

五、故障兜底检查(稳定性验证)

检查项 操作步骤 预期结果 异常处理方案
Mycat 心跳检测 1. 连接 Mycat 管理端口:mysql -h127.0.0.1 -umycat_app -p123456 -P9066

2. 执行:show @@datanode;

所有 dataNode 状态为 UP 状态为 DOWN:检查 MySQL 节点连接配置(IP / 端口 / 密码)
Mycat 日志无报错 grep -i "error" /usr/local/mycat/logs/mycat.log 无新增 ERROR 日志(启动日志除外) 有 ERROR 日志:根据日志关键词(如 Connection failed)排查 MySQL 连接 / 配置问题
高并发简单压测 用脚本执行 1000 次 SELECT 1;(模拟并发) 无连接超时、无数据返回异常 报错 Too many connections:调整 Mycat maxCon 配置(schema.xml 中 dataHost 的 maxCon

六、验证结果总结表

验证维度 验证通过标准 是否通过 问题与整改措施
基础连接认证 能正常连接 Mycat,无认证 / 权限报错
基础 DDL/DML 增删改查无报错,数据同步正常
读写分离(若使用) 写走主库、读走从库,数据同步正常
分库分表(若使用) 数据按规则分布,聚合查询无缺失
事务支持 提交 / 回滚正常,无数据不一致
新语法支持(若需) 业务核心 SQL 执行无报错
稳定性 日志无 ERROR,高并发无异常

核心使用建议

  1. 优先保证「基础连接 + DDL/DML」验证通过,这是业务运行的前提;
  2. 若使用 MySQL 8.0,优先选择 Mycat 2.0.x(原生兼容),避免 Mycat 1.6.x 手动改驱动 / 认证的额外成本;
  3. 验证完成后,保存该清单及结果,作为后续版本升级 / 故障排查的参考依据;
  4. 若涉及生产环境,建议先在测试环境完成全量验证,再灰度上线。
阅读剩余
THE END