)
CentOS 7实战Mycat 1.6.7.4全流程部署与避坑指南在数据库中间件领域Mycat凭借其出色的分库分表能力和对MySQL协议的完美兼容已经成为许多企业解决数据量激增问题的首选方案。本文将带您从零开始在CentOS 7系统上完成Mycat 1.6.7.4的完整部署过程特别针对内网环境和新手可能遇到的权限、Java环境等典型问题进行深度解析。1. 环境准备与基础配置1.1 系统环境检查在开始安装前我们需要确认CentOS 7系统的基础环境是否符合要求# 查看系统版本 cat /etc/redhat-release # 检查内存情况 free -h # 检查磁盘空间 df -h提示Mycat运行至少需要1GB可用内存和2GB磁盘空间生产环境建议配置更高1.2 创建专用用户为Mycat创建独立用户是安全部署的第一步避免使用root权限运行服务# 创建mycat用户组和用户 groupadd mycat useradd -r -g mycat -s /bin/false mycat # 验证用户创建 id mycat1.3 Java环境安装与配置Mycat基于Java开发必须确保正确安装JDK# 检查现有Java版本 java -version # 若未安装执行以下命令安装OpenJDK 8 yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel # 验证安装 java -version javac -version配置JAVA_HOME环境变量# 查找Java安装路径 update-alternatives --config java # 编辑/etc/profile文件 vim /etc/profile在文件末尾添加路径根据实际查找结果调整export JAVA_HOME/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.362.b08-1.el7_9.x86_64 export PATH$PATH:$JAVA_HOME/bin使配置立即生效source /etc/profile2. Mycat安装与目录配置2.1 获取安装包在内网环境中我们通常需要先将安装包下载到本地再上传到服务器# 在本地下载Mycat 1.6.7.4 # 官方地址http://dl.mycat.org.cn/1.6.7.4/Mycat-server-1.6.7.4-release/ # 使用scp上传到服务器示例 scp Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz root服务器IP:/usr/local/2.2 解压与目录权限设置解压安装包并设置正确的目录权限# 切换到安装目录 cd /usr/local # 解压安装包 tar -zxvf Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz # 简化目录名 mv Mycat-server-1.6.7.4-release-20200105164103-linux mycat # 设置目录权限 chown -R mycat:mycat mycat chmod -R 755 mycat2.3 配置环境变量为方便使用mycat命令需要配置系统环境变量vim /etc/profile在文件末尾添加export MYCAT_HOME/usr/local/mycat export PATH$PATH:$MYCAT_HOME/bin使配置生效source /etc/profile验证配置echo $MYCAT_HOME3. 核心配置文件详解3.1 schema.xml配置解析schema.xml是Mycat的核心配置文件之一主要定义逻辑库、表和数据节点的映射关系。以下是一个典型的多节点配置示例mycat:schema xmlns:mycathttp://io.mycat/ !-- 定义逻辑库 -- schema nameTESTDB checkSQLschematrue sqlMaxLimit100 !-- 定义逻辑表 -- table namet_order dataNodedn1,dn2 rulemod-long primaryKeyid/ /schema !-- 定义数据节点 -- dataNode namedn1 dataHostlocalhost1 databasedb1/ dataNode namedn2 dataHostlocalhost1 databasedb2/ !-- 定义数据主机 -- dataHost namelocalhost1 maxCon1000 minCon10 balance0 writeType0 dbTypemysql dbDrivernative switchType1 heartbeatselect user()/heartbeat writeHost hosthostM1 url192.168.1.100:3306 userroot passwordyourpassword/ /dataHost /mycat:schema关键参数说明参数名称说明推荐值checkSQLschema是否检查SQL中的schematruesqlMaxLimit默认返回行数限制100-1000balance负载均衡策略0-3writeType写操作分发方式0-13.2 server.xml安全配置server.xml配置Mycat服务本身参数和用户权限user namemycat_user defaultAccounttrue property namepasswordmypassword/property property nameschemasTESTDB/property !-- 权限控制示例 -- privileges checktrue schema nameTESTDB dml1110 table namet_order dml1100/ /schema /privileges /user注意生产环境必须修改默认用户名密码并严格控制DML权限1可执行0禁止3.3 rule.xml分片规则rule.xml定义分片算法以下是常用的mod-long分片示例tableRule namemod-long rule columnsid/columns algorithmmod-long/algorithm /rule /tableRule function namemod-long classio.mycat.route.function.PartitionByMod property namecount2/property /function4. 服务启动与故障排查4.1 启动与停止服务使用mycat用户启动服务# 切换用户 su - mycat -s /bin/bash # 启动服务 $MYCAT_HOME/bin/mycat start # 查看状态 $MYCAT_HOME/bin/mycat status # 停止服务 $MYCAT_HOME/bin/mycat stop4.2 日志查看与分析Mycat日志是排查问题的关键# 查看启动日志 tail -f $MYCAT_HOME/logs/wrapper.log # 查看业务日志 tail -f $MYCAT_HOME/logs/mycat.log常见启动问题及解决方案Java环境问题ERROR: transport error 202: bind failed: Address already in use检查Java安装和环境变量配置确保JAVA_HOME正确权限不足Permission denied while creating directory确保mycat用户对安装目录有读写权限端口冲突java.net.BindException: Address already in use检查8066服务端口和9066管理端口是否被占用4.3 连接测试使用MySQL客户端连接Mycatmysql -umycat_user -pmypassword -h127.0.0.1 -P8066连接后执行基本SQL测试-- 查看逻辑库 SHOW DATABASES; -- 使用TESTDB库 USE TESTDB; -- 创建测试表 CREATE TABLE t_order (id INT PRIMARY KEY, name VARCHAR(20)); -- 插入测试数据 INSERT INTO t_order VALUES (1, order1), (2, order2); -- 查询数据 SELECT * FROM t_order;5. 性能优化与日常维护5.1 JVM参数调优编辑$MYCAT_HOME/conf/wrapper.conf调整JVM参数wrapper.java.additional.3-Xms1G wrapper.java.additional.4-Xmx2G wrapper.java.additional.5-XX:MaxPermSize256M提示Xms和Xmx建议设置为相同值避免运行时内存波动5.2 连接池配置优化在server.xml中调整连接池参数system property namedefaultSqlParserdruidparser/property property nameprocessorBufferPool2048/property property nameprocessorBufferChunk1024/property /system推荐配置值参数小型系统中型系统大型系统processorBufferPool102420484096processorBufferChunk512102420485.3 监控与管理Mycat自带管理端口默认9066可获取运行时信息mysql -umycat_user -pmypassword -h127.0.0.1 -P9066常用管理命令-- 查看连接 SHOW connection; -- 查看线程池 SHOW threadpool; -- 查看缓存 SHOW cache; -- 看数据节点 SHOW datanode;5.4 定期维护建议每日检查日志文件大小和错误日志每周备份配置文件每月统计慢查询并优化根据业务增长情况提前规划分片策略调整在实际部署过程中我们发现Mycat 1.6.7.4版本在CentOS 7上运行稳定但需要注意定期清理日志文件避免磁盘空间耗尽。对于分片键的选择建议使用业务查询频繁的字段作为分片键可以显著提升查询性能。