保姆级教程:在Linux上从零部署Mycat2 1.21,含专属账号配置与连接测试
从零开始在Linux上部署Mycat2 1.21完整避坑指南与实战连接测试当你第一次听说Mycat2时可能会被它数据库中间件的身份吓到。但别担心这就像给你的MySQL数据库请了一位超级管家——它能帮你处理分库分表、读写分离这些复杂操作而你只需要像平时一样写SQL语句。本文将带你从零开始在一台全新的Linux服务器上完成Mycat2 1.21的完整部署包括那些官方文档可能没讲清楚的细节。1. 环境准备与安装包获取在开始之前确保你的Linux服务器满足以下基本条件已安装Java 8或更高版本运行java -version检查至少有1GB可用内存已安装unzip工具可通过yum install unzip或apt-get install unzip安装获取Mycat2安装包需要特别注意版本匹配问题。Mycat2由两个核心组件构成启动包install-template核心jar包这两个组件必须严格版本一致否则会导致启动失败。以下是获取步骤# 创建专用安装目录 mkdir -p /opt/mycat2 cd /opt/mycat2 # 下载启动包示例使用wget也可通过其他方式下载 wget http://www.mycat.org.cn/download/1.21-release/install-template/mycat2-install-template-1.21.zip # 下载核心jar包 wget http://www.mycat.org.cn/download/1.21-release/mycat2-1.21-release-jar-with-dependencies.jar注意如果下载速度慢可以尝试将www.mycat.org.cn替换为国内镜像站点但务必确保下载的是官方版本避免安全风险。2. 解压与目录结构配置解压过程看似简单但有几个关键点需要注意unzip mycat2-install-template-1.21.zip mv mycat2-install-template-1.21 mycat2 cd mycat2 # 将jar包移动到lib目录 mv ../mycat2-1.21-release-jar-with-dependencies.jar lib/此时目录结构应如下所示mycat2/ ├── bin/ # 可执行脚本 ├── conf/ # 配置文件 │ ├── datasources/ │ └── users/ ├── lib/ # 依赖库 └── logs/ # 日志文件关于权限设置网上很多教程会直接推荐chmod 777但这存在安全隐患。更合理的做法是# 创建专用系统用户 useradd -r -s /bin/false mycat # 设置目录归属 chown -R mycat:mycat /opt/mycat2 # 设置合理权限 find /opt/mycat2 -type d -exec chmod 750 {} \; find /opt/mycat2 -type f -exec chmod 640 {} \; chmod 750 bin/*3. MySQL专属账号配置Mycat需要连接后端MySQL数据库创建一个专用账号是必须的。以下是完整的SQL脚本包含MySQL 8的特殊权限需求-- 创建专用账号 CREATE USER mycat% IDENTIFIED BY ComplexPassword123!; -- MySQL 8必须的权限 GRANT XA_RECOVER_ADMIN ON *.* TO mycat%; -- 基础操作权限 GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON *.* TO mycat%; -- 刷新权限 FLUSH PRIVILEGES;关键参数说明权限项必要性说明XA_RECOVER_ADMIN必须(MySQL8)支持分布式事务恢复CREATE/ALTER ROUTINE推荐存储过程支持EVENT/TRIGGER可选事件和触发器支持4. 配置文件深度解析prototypeDs.datasource.json是Mycat2连接后端数据库的核心配置文件位于conf/datasources/目录下。一个完整的配置示例如下{ dbType: mysql, idleTimeout: 60000, initSqls: [], initSqlsGetConnection: true, instanceType: READ_WRITE, maxCon: 1000, maxConnectTimeout: 3000, maxRetryCount: 5, minCon: 1, name: prototypeDs, password: ComplexPassword123!, type: JDBC, url: jdbc:mysql://127.0.0.1:3306?useSSLfalseallowPublicKeyRetrievaltrueserverTimezoneAsia/Shanghai, user: mycat, weight: 0 }重要参数调整建议useSSL生产环境应设为true并配置证书测试环境可设为falseserverTimezone必须与数据库时区一致maxCon/minCon根据服务器配置调整一般建议4核8G服务器maxCon200-3008核16G服务器maxCon500-8005. 启动流程与故障排查启动Mycat2有多种方式每种适合不同场景# 常规启动后台运行 ./mycat start # 控制台模式调试用 ./mycat console # 查看状态 ./mycat status常见启动问题排查Java环境问题# 检查Java版本 java -version # 如果未安装使用以下命令安装CentOS示例 yum install java-11-openjdk-devel端口冲突# 检查8066端口是否被占用 netstat -tulnp | grep 8066 # 如果被占用可以修改conf/server.json中的端口配置权限问题# 查看日志中的权限错误 tail -n 100 logs/wrapper.log | grep -i permission # 解决方法确保mycat用户对目录有适当权限 chown -R mycat:mycat /opt/mycat2日志分析技巧搜索ERROR或Exception快速定位问题重点关注最后出现的错误前面的可能是级联错误6. 连接测试与用户管理成功启动后可以使用各种客户端连接Mycat2使用MySQL命令行连接mysql -h127.0.0.1 -P8066 -uroot -p123456使用DBeaver/Navicat连接主机Mycat服务器IP端口8066用户名/密码root/123456默认修改默认用户密码 编辑conf/users/root.user.json{ dialect:mysql, ip:null, password:NewSecurePassword456!, transactionType:proxy, username:root }安全建议立即修改默认密码创建业务专用账号而非使用root限制访问IP生产环境7. 性能调优初步完成基础部署后可以通过以下配置提升性能调整JVM参数 编辑conf/wrapper.conf# 初始堆内存 wrapper.java.initmemory512 # 最大堆内存建议不超过物理内存的70% wrapper.java.maxmemory2048 # GC参数JDK11推荐 wrapper.java.additional.10-XX:UseG1GC关键系统参数优化# 增加文件描述符限制 echo * soft nofile 65535 /etc/security/limits.conf echo * hard nofile 65535 /etc/security/limits.conf # 调整TCP参数 echo net.ipv4.tcp_max_syn_backlog 8192 /etc/sysctl.conf echo net.core.somaxconn 8192 /etc/sysctl.conf sysctl -p在实际项目中首次启动Mycat2后最常见的疏忽是忘记检查MySQL的max_connections参数。Mycat的maxCon设置不应超过MySQL服务器的max_connections值否则会导致连接被拒绝。一个简单的检查方法是登录MySQL后执行SHOW VARIABLES LIKE max_connections;然后确保Mycat配置中的maxCon比这个值小至少20%为其他连接预留空间。