乐于分享
好东西不私藏

MyCAT 实战指南:从安装到配置的完整攻略(附避坑技巧)

MyCAT 实战指南:从安装到配置的完整攻略(附避坑技巧)
开篇碎碎念💬
大家好呀~ 我是云扬!最近做项目遇到了 MySQL 性能瓶颈,单库单表数据量飙到百万后,查询速度肉眼可见变慢😭 对比了 Sharding-JDBC、ProxySQL 等中间件,最终选择了 MyCAT—— 配置简单、稳定性强,新手也能快速上手!
今天就把我的完整实战过程整理出来,从安装到配置一步不落,还汇总了踩坑记录,正在被数据库性能困扰的小伙伴赶紧码住~

一、为什么选 MyCAT?3 大核心优势✨

作为后端开发,数据库扩容是绕不开的坎!MyCAT 作为开源数据库中间件,完美解决 3 个关键问题:
读写分离:写操作走主库,读请求分散到从库,读性能直接提升 30%+
分库分表:应用层不用管底层物理库拆分,MyCAT 自动路由合并结果
故障切换:主库宕机自动切从库,无需人工干预,系统可用性拉满
简单说,MyCAT 就是数据库的 "智能代理",让你不用改一行代码,就能实现数据库扩容~

二、实战部署:3 台服务器环境配置🖥️

先说明我的测试环境,大家可参考匹配:
  • 3 台 MySQL 实例(151 主库、152 从库、153 部署 MyCAT)
  • 操作系统:CentOS 7(Windows、Ubuntu 也可参考,命令稍作调整)

1. 前置准备:安装 JDK(必做!)

MyCAT 是 Java 开发的,必须装 JDK 1.8(高版本会不兼容哦):
# 一键安装JDK 1.8,无需手动配置环境变量yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel -y# 验证是否成功(出现版本号就OK)java -version

2. 下载 MyCAT 安装包 + 核心 jar 包

这步是基础,建议复制命令直接执行:
# 进入存放源码的目录cd /usr/src# 下载MyCAT安装模板(保存好链接,避免失效)wget http://dl.mycat.org.cn/2.0/install-template/mycat2-install-template-1.21.zip# 解压(没装unzip的先执行:yum install unzip -y)unzip mycat2-install-template-1.21.zip# 关键!下载核心jar包(少了这步启动必失败)cd mycat/lib/wget http://dl.mycat.org.cn/2.0/1.21-release/mycat2-1.21-release-jar-with-dependencies.jar# 移动到常用目录,方便后续操作mv /usr/src/mycat /usr/local

3. MySQL 授权:创建专用连接用户

在主库(192.168.184.151)执行 SQL,给 MyCAT 开权限:
-- 创建MyCAT专用用户(用户名:mycat_rw,密码:Ud9_a8Gca1)CREATE USER 'mycat_rw'@'%' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY 'Ud9_a8Gca1';-- 授予所有权限(测试环境用,生产环境可按需缩减)GRANT all ON *.* TO 'mycat_rw'@'%';FLUSH PRIVILEGES; -- 刷新权限(踩坑提醒:千万别忘这步!)-- 创建逻辑库对应的物理库create database mycat;

4. 3 个核心配置文件修改(重点!)

这部分决定 MyCAT 能否正常工作,我整理了最关键的配置项,其他默认即可:

(1)数据源配置(连接 MySQL 主库)

# 编辑配置文件cd /usr/local/mycat/vim conf/datasources/prototypeDs.datasource.json

修改以下参数(替换成你的主库信息):
{  "password": "Ud9_a8Gca1", // 刚才创建的MySQL用户密码  "type": "JDBC",  "url": "jdbc:mysql://192.168.184.151:3306/mycat?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8",  "user": "mycat_rw",  "instanceType": "READ_WRITE" // 主库设为读写模式}

(2)MyCAT 登录账号配置

vim conf/users/root.user.json
设置应用层连接 MyCAT 的账号密码:
{  "dialect": "mysql",  "ip": null, // 允许所有IP访问(生产环境可指定具体IP)  "password": "UdYca86a", // MyCAT登录密码  "transactionType": "proxy", // 本地事务(分布式事务设为XA)  "username": "mycat" // MyCAT登录用户名}

(3)主从集群配置

vim conf/clusters/prototype.cluster.json
主从模式关键配置:
{  "clusterType": "MASTER_SLAVE", // 主从集群  "heartbeat": "show status like 'wsrep%'", // 心跳检测  "masters": ["prototypeDs"], // 主数据源(和上面配置对应)  "name": "prototype",  "readBalanceType": "BALANCE_ALL_READ", // 所有从库参与读负载均衡  "switchType": "SWITCH" // 允许主从自动切换}

5. 启动 MyCAT 并验证

# 赋予执行权限chmod +x ./bin/*# 启动MyCAT(首次启动可能要等30秒)./bin/mycat start# 查看启动状态(出现"running"就是成功啦)./bin/mycat status# 启动失败?查看日志排查tail -f /usr/local/mycat/logs/wrapper.log

6. 测试连接:是否配置成功?

用 MySQL 客户端连接 MyCAT(端口 8066 是默认数据端口):
mysql -umycat -p'UdYca86a' -P8066 -h192.168.184.153
连接成功后执行 show databases;,能看到 mycat 库就说明配置没问题啦🎉

三、常用命令 + 避坑指南🚨

1. MyCAT 常用操作

./bin/mycat start  # 启动./bin/mycat stop   # 停止./bin/mycat restart# 重启./bin/mycat status # 查看状态

2. 新手必踩的 4 个坑(附解决方案)

❌ 忘记刷新 MySQL 权限 → 执行 FLUSH PRIVILEGES; 即可
❌ JDK 版本过高 → 必须用 1.8 版本,高版本不兼容
❌数据源 URL 漏写编码 / 时区 → 加上 useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
❌ 集群配置中 masters 参数不匹配 → 必须和数据源配置文件名一致(如 prototypeDs)

3. 生产环境注意事项

  • 建议配置 2 个以上从库,提升读性能和可用性
  • 分布式事务需确保 MySQL 支持 XA 协议
  • 定期备份 MyCAT 配置文件,避免误操作无法恢复
如果大家有具体的需求或问题,欢迎在评论区留言交流~ 觉得有用的话,记得点赞 + 在看 + 转发给身边的小伙伴呀!❤️