# node-mysql **Repository Path**: hdh686868/node-mysql ## Basic Information - **Project Name**: node-mysql - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-02 - **Last Updated**: 2026-07-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README gi# MySQL 性能监控面板 基于 Node.js + Vue 3 + Ant Design Vue 的 MySQL 数据库实时性能监控与慢 SQL 在线展示系统。 ## 功能特性 - **实时性能监控**:QPS、连接数、InnoDB 缓冲池命中率、行操作统计、网络流量等核心指标 - **慢 SQL 在线展示**:自动捕获超过阈值的慢查询,实时展示 SQL 语句、耗时、来源等信息 - **WebSocket 实时推送**:基于 Socket.IO 实现数据实时刷新,无需手动刷新页面 - **连接使用率告警**:进度条颜色随使用率变化(绿 → 黄 → 红) - **Docker 容器化部署**:多阶段构建,镜像轻量化 ## 技术栈 | 层级 | 技术 | |---|---| | 后端 | Node.js / Express / mysql2 | | 实时通信 | Socket.IO | | 前端 | Vue 3 (Composition API) / Ant Design Vue 4 / Vite | ## 项目结构 ``` node-mysql/ ├── server.js # Express 服务入口 + Socket.IO ├── db.js # MySQL 连接池 + 监控采集逻辑 ├── config.js # 配置(环境变量) ├── Dockerfile # Docker 多阶段构建 ├── .dockerignore ├── client/ # Vue 3 前端 │ ├── index.html │ ├── vite.config.js │ └── src/ │ ├── main.js │ ├── App.vue # 主页面(仪表盘 + 慢SQL表格) │ └── composables/useSocket.js # Socket.IO 封装 └── package.json ``` ## 快速开始 ### 1. 安装依赖 ```bash # 后端依赖 npm install # 前端依赖 cd client && npm install ``` ### 2. 配置环境变量 | 环境变量 | 默认值 | 说明 | |---|---|---| | `MYSQL_HOST` | `localhost` | MySQL 主机地址 | | `MYSQL_PORT` | `3306` | MySQL 端口 | | `MYSQL_USER` | `root` | MySQL 用户名 | | `MYSQL_PASSWORD` | `123456` | MySQL 密码 | | `MYSQL_DATABASE` | `mysql` | 连接的数据库 | | `SLOW_QUERY_THRESHOLD` | `1000` | 慢查询阈值(毫秒) | | `MONITOR_INTERVAL` | `3000` | 监控采集间隔(毫秒) | | `WEB_PORT` | `3300` | Web 面板端口 | | `MAX_SLOW_QUERY_RECORDS` | `200` | 最大慢查询记录数 | | `MYSQL_POOL_LIMIT` | `10` | 连接池大小上限 | | `MYSQL_POOL_QUEUE` | `0` | 连接池队列上限 | ### 3. 启动 **方式一:本地开发** ```bash # 先构建前端 cd client && npm run build && cd .. # 启动后端 node server.js ``` **方式二:前后端分离开发** ```bash # 终端1:启动后端(端口 3300) node server.js # 终端2:启动前端开发服务器(端口 5173,自动代理 API 到 3300) cd client && npm run dev ``` ### 4. 访问 打开浏览器访问 `http://localhost:3300` ## Docker 部署 ### 构建镜像 ```bash docker build -t mysql-monitor . ``` ### 运行容器 ```bash docker run -d \ --name mysql-monitor \ -e MYSQL_HOST=10.16.68.181 \ -e MYSQL_PORT=3306 \ -e MYSQL_USER=root \ -e MYSQL_PASSWORD=123456 \ -e MYSQL_DATABASE=mysql \ -p 3300:3300 \ mysql-monitor ``` ### 自定义参数示例 ```bash docker run -d \ --name mysql-monitor \ -e MYSQL_HOST=10.16.68.181 \ -e MYSQL_PASSWORD=123456 \ -e SLOW_QUERY_THRESHOLD=500 \ -e MONITOR_INTERVAL=2000 \ -e WEB_PORT=8080 \ -p 8080:8080 \ mysql-monitor ``` ## API 接口 | 方法 | 路径 | 说明 | |---|---|---| | GET | `/api/status` | 服务状态 | | GET | `/api/performance` | 当前性能数据 | | GET | `/api/slow-queries` | 慢查询列表 | ## 监控指标说明 | 指标 | 说明 | |---|---| | QPS | 每秒查询数 | | 当前连接数 | 当前线程连接数 / 运行中数量 / 历史峰值 / 上限 | | 累计慢查询 | MySQL 全局慢查询累计数 | | InnoDB 缓冲池命中率 | 缓冲池读命中百分比 | | SELECT/INSERT/UPDATE/DELETE | 各类 SQL 累计执行次数 | | 网络流量 | 接收/发送流量 (MB) | | 连接使用率 | 当前连接占比,颜色随比例变化 | ## 慢 SQL 判定逻辑 通过 `SHOW FULL PROCESSLIST` 每秒采集当前执行的查询,当查询执行时间超过 `SLOW_QUERY_THRESHOLD`(默认 1000ms)时,自动记录到慢查询列表,按耗时降序排列,通过 WebSocket 实时推送到前端