
简介这份资源是面向Java后端开发与数据库运维人员的Mycat2基础安装包用于在服务器上快速部署这款开源分布式数据库中间件。Mycat2通过数据分片、读写分离、SQL路由与负载均衡等机制帮助解决大数据量、高并发场景下单机数据库难以承载的存储与访问瓶颈适合需要搭建分布式数据库架构、学习分库分表原理的初中级开发者。压缩包共51个文件约1.2MB包含跨平台启动脚本与wrapper本地库覆盖Linux、Windows、macOS、AIX、Solaris等系统、核心jar包、schema与server等配置样例、初始化SQL脚本及日志配置解压后按说明修改配置即可启动服务实例。目前已有1069人学习下载。借助这份安装包读者可完整获得Mycat2运行所需的组件与配置模板结合分片规则、动态扩展、高可用与监控管理等知识点快速在本地或远程服务器搭建可运行的中间件环境为后续深入理解分布式数据库路由与负载均衡打下实践基础。1. MyCat2 基础安装包从零跑通分库分表中间件的起点如果你手头正好有一套 MyCat2 的基础安装包却卡在“解压之后不知道从哪下手”那这篇就是写给你的。MyCat2 是面向 MySQL 生态的分布式数据库中间件核心能力是把多个物理库聚合成一个逻辑库对上层应用暴露单一连接入口分库分表、读写分离、全局序列这些活都由它来扛。基础安装包通常包含启动脚本、核心 jar、默认配置模板和依赖库是搭一套最小可运行环境的最短路径。它适合两类人一类是要在本地或测试环境快速验证分片规则的后端开发另一类是需要在项目里引入中间件但不想从源码编译的运维。这篇不聊虚的直接按“装起来、连上去、配一条分片规则、踩几个坑”的顺序走一遍。2. MyCat2 安装包结构拆解与运行环境准备拿到安装包先别急着敲启动命令花五分钟把目录结构看清楚后面排错能省一半时间。MyCat2 的发行包和 MyCat1.x 的布局差异不小很多人翻车就翻在拿旧版经验套新版。2.1 安装包目录里到底有什么解压后典型结构如下不同构建版本略有出入以你手上实物为准目录/文件作用是否必须关注bin/启动、停止、重启脚本是启动入口conf/核心配置含数据源、分片规则、用户是改动最频繁lib/依赖 jar 包集合是缺包直接起不来logs/运行日志与 wrapper 日志是排错第一现场mycat2.jar或类似核心包主程序是版本标识在这conf目录是重点。MyCat2 把配置拆得比 1.x 更细常见的有数据源配置、集群/分片配置、用户与权限配置。你至少要改三处数据源指向真实 MySQL、逻辑库与分片规则绑定、用户密码对上。改之前先备份整个conf这是血泪经验——配置改乱了没有后悔药回滚全靠备份。2.2 运行环境与前置依赖MyCat2 基于 JVM 运行对 JDK 版本有要求常见做法是用 JDK 8 或 JDK 11具体看你安装包内lib里依赖的字节码版本。判断方法很简单启动报UnsupportedClassVersionError就是 JDK 版本不匹配。前置条件清单一台能跑 JVM 的机器内存建议不低于 2G分片多的话往上加。后端至少一个可连的 MySQL 实例版本建议 5.7 或 8.0字符集统一 utf8mb4。防火墙放行 MyCat2 的服务端口默认 8066 数据端口、9066 管理端口以配置为准。MySQL 账号要有对应库的读写权限别用 root 裸奔建专用账号。启动脚本一般长这样先看再用# 进入 bin 目录 cd mycat2/bin # 赋予执行权限Linux 下常见 chmod x *.sh # 启动前台观察日志用 console后台用 start ./mycat console逻辑说明console模式会把日志直接打到终端第一次启动强烈建议用它能第一时间看到配置解析错误。等确认能起来再换成后台启动脚本。参数上如果脚本支持指定 JVM 内存比如JAVA_OPTS分片多、并发高时把堆调大默认值往往偏保守。提示启动前用java -version确认 JDK 生效版本机器上装了多个 JDK 时JAVA_HOME指向错的那个是最隐蔽的坑。3. 连上 MyCat2 并配置第一条分库分表规则环境就绪后目标很明确让 MyCat2 起来、能连、能按规则把数据路由到不同物理库。这一章把配置和验证串起来。3.1 数据源与逻辑库配置先在conf里找到数据源配置文件把后端 MySQL 地址、账号、密码填进去。常见做法是给每个物理库配一个数据源节点再在逻辑库配置里引用它们。# 数据源配置示例字段名以你安装包实际模板为准 datasource: - name: ds0 url: jdbc:mysql://127.0.0.1:3306/db0?useUnicodetruecharacterEncodingutf8mb4 user: mycat_user password: your_password maxPoolSize: 20 - name: ds1 url: jdbc:mysql://127.0.0.1:3306/db1?useUnicodetruecharacterEncodingutf8mb4 user: mycat_user password: your_password maxPoolSize: 20逻辑说明name是逻辑标识后面分片规则靠它引用url里的库名是真实物理库maxPoolSize控制连接池上限设太小高并发会排队设太大压垮后端 MySQL按后端承载能力调。参数上字符集务必和 MySQL 实际一致否则中文乱码会以“玄学”形式出现——查得到但显示不对。3.2 分片规则绑定与建表验证分片规则决定一条数据落到哪个库哪张表。MyCat2 支持多种算法入门先用取模或范围直观好验证。-- 通过管理端口或客户端连接后查看逻辑库 show databases; -- 建一张分片表按 id 取模分到两个库 CREATE TABLE t_order ( id BIGINT NOT NULL, user_id BIGINT, amount DECIMAL(10,2), PRIMARY KEY(id) ) ENGINEInnoDB;逻辑说明建表语句在 MyCat2 上执行时它会根据分片配置把 DDL 下发到各物理库。验证是否真的分片最直接的办法是插入几条不同 id 的数据然后分别登录后端 MySQL 看数据落在哪个库。-- 插入测试数据 INSERT INTO t_order(id, user_id, amount) VALUES (1, 1001, 99.00); INSERT INTO t_order(id, user_id, amount) VALUES (2, 1002, 199.00); INSERT INTO t_order(id, user_id, amount) VALUES (3, 1003, 299.00);插完后去 db0、db1 分别select * from t_order如果 id 按取模分散在两个库说明路由生效。这一步是分库分表最核心的验证动作别跳过。3.3 读写分离的初步配置思路如果后端是一主多从可以在数据源层区分主从角色让写走主、读走从。配置上通常给数据源打角色标记再在逻辑库层指定读写策略。入门阶段建议先把分片跑通再叠加读写分离两个一起上出问题时很难定位是哪层引起的。常见做法是分两步验证先单主验证分片再加从库验证读写路由。4. 避坑与常见问题排查这一章是实打实踩出来的每条按现象、原因、解决写遇到对号入座。4.1 启动报类找不到或版本不兼容现象启动瞬间抛ClassNotFoundException或UnsupportedClassVersionError进程直接退出。 原因一是lib目录依赖缺失或被误删二是 JDK 版本和依赖字节码不匹配。 解决先确认lib完整别手动删 jar再用java -version核对 JDK换到安装包要求的版本。日志里类名会明确告诉你缺哪个包。4.2 连得上 MyCat2 但查不到数据现象客户端能连 8066show databases有逻辑库但查表报错或空结果。 原因多半是逻辑库没正确绑定数据源或分片规则引用的数据源名写错。 解决回查逻辑库配置里引用的数据源name是否和实际定义一致大小写敏感。改完重启用管理端口看配置加载日志。4.3 数据插入后分布不符合预期现象插了数据但全落在一个库或路由报错。 原因分片字段选错或分片算法参数配错比如取模基数写成 1。 解决确认分片字段是查询和插入都会带上的列核对算法参数取模基数应等于分片节点数。用少量已知 id 的数据做验证别一上来灌大批量。4.4 中文乱码现象数据能存能查但中文显示成问号或乱码。 原因MyCat2 连接串字符集、后端 MySQL 库表字符集、客户端字符集三者不一致。 解决三处统一成 utf8mb4连接串显式带上characterEncodingutf8mb4建库建表也指定同样字符集。4.5 端口占用导致启动失败现象启动日志报Address already in use。 原因8066 或 9066 被其他进程占用常见是上一次没停干净。 解决netstat -tlnp | grep 8066找到进程确认无用后杀掉或改配置换端口。重启前养成先确认端口空闲的习惯。5. 进阶技巧用管理端口做配置热检查与压测前自检跑通基础分片只是开始真正上线前还有几件事值得做。第一件是善用管理端口。MyCat2 的管理端口默认 9066能查运行状态、数据源连接情况、配置加载结果很多问题不用翻日志连上去几条命令就能定位。我一般会在改完配置重启后先连管理端口确认数据源全部 online再连数据端口做业务验证顺序反了容易白忙。第二件是压测前的自检清单。分片规则、连接池上限、后端 MySQL 最大连接数这三者要匹配。MyCat2 的连接池上限乘分片数不能超过后端 MySQL 的max_connections否则压测一上来就是连接拒绝。这个账很多人不算等到压测报错才回头改。第三件是日志级别。默认日志级别在生产环境可能偏啰嗦排查期调细稳定后调粗避免磁盘被日志打满。改日志配置同样要重启生效别指望热加载。# 连接管理端口做自检端口以实际配置为准 mysql -h127.0.0.1 -P9066 -umycat_user -p # 查看数据源状态确认全部可用 show datasource;逻辑说明管理端口的命令集和版本相关show datasource是常见的一条用来确认后端连接是否正常。参数上管理端口账号密码在用户配置里单独定义别和数据端口混用同一套弱密码。最后说个习惯。从那以后我每次动 MyCat2 配置都强制走一遍“备份 conf → 改配置 → console 前台启动看日志 → 管理端口自检 → 数据端口插测数据”的流程一步不省。中间件这东西配置错一个字表现可能是完全不相干的报错靠猜不如靠流程。希望帮到你。本文还有配套的精品资源点击获取