监控和管理Mycat

Mycat 监控与管理主要通过 9066 管理端口命令行Mycat-Web 可视化平台日志分析JVM 监控第三方监控集成 实现,覆盖状态查看、配置热更、慢 SQL 分析、节点健康、集群管理等全场景。下面按方案详细说明。

一、命令行管理(9066 端口,最常用)

Mycat 提供 9066 管理端口,用 MySQL 客户端即可连接执行管理命令,无需重启即可完成大部分运维操作。

1. 连接管理端口

bash
运行
# 连接命令(-P 9066 为管理端口)
mysql -h 127.0.0.1 -P 9066 -u root -pRoot@123 -D TESTDB
  • -P:大写,指定管理端口 9066(数据端口为 8066)
  • -u/-p:对应 server.xml 中配置的用户与密码
  • -D:指定逻辑库(可选)

2. 核心管理命令(高频)

(1)查看帮助与版本

sql
-- 查看所有管理命令
show @@help;
-- 查看 Mycat 版本
show @@version;

(2)配置热加载与回滚(无需重启)

sql
-- 热加载配置(修改 schema.xml/server.xml 后执行)
reload @@config;
-- 回滚到上一次配置
rollback @@config;
⚠️ 注意:reload @@config 会中断当前事务,建议低峰期执行。

(3)逻辑库与数据节点状态

sql
-- 查看逻辑库列表
show @@database;
-- 查看数据节点(分片)状态(活跃/空闲连接数)
show @@datanode;
-- 按逻辑库过滤数据节点
show @@datanode where schema = 'TESTDB';

(4)后端节点心跳与健康

sql
-- 查看后端 MySQL 节点心跳状态(1=正常,-1=异常,-2=超时)
show @@heartbeat;
-- 查看指定 dataHost 心跳详情
show @@heartbeat.detail where name = 'dh1';

(5)连接管理(应用与后端)

sql
-- 查看前端(应用→Mycat)连接
show @@connection;
-- 查看后端(Mycat→MySQL)连接池状态
show @@backend;
-- 强制关闭指定连接(ID 来自 show @@connection)
kill @@connection 6,7,8;

(6)SQL 监控(慢查询、高频 SQL)

sql
-- 查看慢 SQL(默认 > 2s)
show @@sql.slow;
-- 查看高频执行 SQL
show @@sql.high;
-- 查看 SQL 执行统计(总览)
show @@sql.sum;
-- 按表查看读写统计
show @@sql.sum.table;

(7)系统与线程状态

sql
-- 查看处理器(线程池)状态
show @@processor;
-- 查看命令执行统计
show @@command;
-- 查看缓存使用情况
show @@cache;

二、Mycat-Web(可视化监控平台,Eye)

Mycat-Web(又称 Mycat-Eye)是官方可视化运维工具,支持多节点管理、实时监控、慢 SQL 分析、告警通知等。

1. 核心功能

  • 监控面板:连接数、QPS/TPS、JVM 内存、CPU、磁盘、网络
  • SQL 分析:慢 SQL、高频 SQL、SQL 执行明细、路由统计
  • 节点管理:后端 MySQL 心跳、主从状态、连接池监控
  • 告警配置:邮件 / 短信告警(连接异常、慢 SQL 超标、节点宕机)
  • 配置管理:可视化编辑 schema.xml/server.xml,一键热加载

2. 部署与使用

  1. 下载:从 Mycat 官网或 GitHub 下载 Mycat-Web 包
  2. 配置:修改 application.properties,指定 Zookeeper 地址(用于集群管理)与 Mycat 节点信息
  3. 启动:java -jar mycat-web.jar(默认端口 8084)
  4. 访问:浏览器打开 http://IP:8084,默认账号 admin/admin

3. 关键监控指标

  • 连接指标:前端连接数、后端连接池使用率、活跃 / 空闲连接
  • 性能指标:QPS、TPS、平均响应时间、慢 SQL 数量
  • 资源指标:JVM 堆 / 非堆内存、GC 次数、CPU 使用率
  • 分片指标:各分片数据量、读写分布、热点分片

三、日志监控与分析

Mycat 日志是排查问题的核心依据,默认存放在 logs/ 目录,通过 log4j2.xml 配置MYCAT。

1. 核心日志文件

  • mycat.log:主运行日志(启动、连接、路由、错误)
  • sql.log:SQL 执行日志(所有经过 Mycat 的 SQL,可配置开关)
  • slow.log:慢 SQL 日志(默认 > 2s,可在 server.xml 调整)
  • wrapper.log:JVM 启动与运行日志(OOM、GC、崩溃信息)

2. 日志配置(log4j2.xml)

xml
<!-- 开启 SQL 日志 -->
<Logger name="io.mycat.server.NonBlockingSession" level="debug" additivity="false">
  <AppenderRef ref="SQL"/>
</Logger>
<!-- 慢 SQL 阈值(单位:毫秒) -->
<property name="slowSqlTime">2000</property>

3. 常用日志排查命令

bash
运行
# 实时查看主日志
tail -f logs/mycat.log
# 过滤错误日志
grep -i "error" logs/mycat.log
# 统计慢 SQL 数量
grep "Slow SQL" logs/slow.log | wc -l
# 查看最近 100 条慢 SQL
tail -100 logs/slow.log

四、JVM 监控(Mycat 性能瓶颈排查)

Mycat 基于 Java 开发,JVM 监控是定位内存泄漏、GC 频繁、线程死锁的关键。

1. JVM 参数配置(wrapper.conf)

conf
# 堆内存(建议 4G~8G,根据并发调整)
wrapper.java.additional.1=-Xms4G
wrapper.java.additional.2=-Xmx8G
# 新生代大小
wrapper.java.additional.3=-Xmn2G
# GC 日志
wrapper.java.additional.4=-XX:+PrintGCDetails
wrapper.java.additional.5=-Xloggc:logs/gc.log

2. JVM 监控工具

  • jps:查看 Mycat 进程 ID
    bash
    运行
    jps -l | grep MycatServer
    
  • jstat:实时 GC 监控
    bash
    运行
    jstat -gcutil 12345 1000 10  # 每1秒输出1次,共10次
    
  • jmap:堆内存 dump(排查内存泄漏)
    bash
    运行
    jmap -dump:format=b,file=heap.hprof 12345
    
  • jconsole/jvisualvm:可视化 JVM 监控(连接 Mycat 进程)

五、集群与高可用管理

1. 基于 Zookeeper 的集群管理

Mycat 支持 Zookeeper 实现配置中心与集群协调,支持:
  • 配置统一管理与分发
  • 节点自动发现与健康检查
  • 主从自动切换(switchType="1"
  • 多 Mycat 节点负载均衡(配合 LVS/Haproxy)

2. 高可用配置要点

  • dataHost 配置switchType="1"(自动切换主库)、slaveThreshold="100"(延迟阈值)
  • Mycat 自身高可用:部署多台 Mycat,通过 LVS/Haproxy 做负载均衡,实现单点故障自动切换
  • 主从复制监控:通过 show @@heartbeat 与 Mycat-Web 实时监控主从延迟与状态

六、第三方监控集成(企业级)

1. Prometheus + Grafana

  • 安装 Mycat Exporter(采集连接数、QPS、慢 SQL 等指标)
  • Prometheus 定时拉取指标,Grafana 做可视化大盘
  • 配置告警规则(连接数超标、慢 SQL 突增、节点宕机)

2. Zabbix

  • 自定义监控项:通过 9066 端口执行 show @@datanode/show @@heartbeat 采集状态
  • 模板化监控:连接数、CPU、内存、磁盘、网络、JVM GC
  • 告警通知:邮件、短信、企业微信

3. ELK(日志集中分析)

  • Logstash 采集 Mycat 日志(mycat.log、sql.log、slow.log)
  • Elasticsearch 存储与索引
  • Kibana 做日志可视化、慢 SQL 分析、异常日志检索

七、常见运维场景实操

1. 配置修改后热加载

  1. 修改 schema.xml/server.xml
  2. 连接 9066 端口执行:reload @@config;
  3. 验证:show @@datanode; 查看配置是否生效

2. 慢 SQL 优化

  1. 查看慢 SQL:show @@sql.slow;tail logs/slow.log
  2. 分析执行计划:在对应物理库执行 EXPLAIN
  3. 优化:添加索引、调整分片键、拆分大 SQL
  4. 验证:观察慢 SQL 数量是否下降

3. 后端节点故障排查

  1. 检查心跳:show @@heartbeat; 查看状态是否为 1
  2. 检查物理库:登录 MySQL 查看是否可连接、主从是否正常
  3. 检查网络:ping/telnet 测试 Mycat 与 MySQL 网络连通性
  4. 自动切换:switchType="1" 时,主库故障会自动切到从库

4. 连接数过高处理

  1. 查看连接:show @@connection;show @@backend;
  2. 关闭闲置连接:kill @@connection id;
  3. 调整配置:server.xmlidleTimeout(连接超时)、dataHostmaxCon(最大连接数)
  4. 应用优化:检查应用是否未正确关闭连接(连接泄漏)

八、监控与管理最佳实践

  1. 必开监控:9066 命令行 + Mycat-Web + 慢 SQL 日志
  2. 告警配置:连接数、慢 SQL、节点心跳、JVM GC、磁盘空间
  3. 定期巡检:每日查看慢 SQL、连接池使用率、主从延迟
  4. 配置管理:所有配置修改通过热加载,避免重启
  5. 容量规划:根据 QPS/TPS 增长,提前扩容 Mycat 节点与物理库
  6. 灾备演练:定期模拟主库宕机、Mycat 节点故障,验证自动切换与高可用

九、总结

Mycat 监控管理体系完整:命令行适合快速运维,Mycat-Web 适合可视化监控,日志 / JVM 适合深度排查,第三方集成适合企业级统一监控。日常运维优先使用 9066 命令与 Mycat-Web,复杂问题结合日志与 JVM 分析,确保 Mycat 集群稳定运行。
上一篇 iStation概述技术白皮书
下一篇 S9700是否支持跨三层转发广播报文