运维养龙虾--给你的 AI工具 装上 MySQL 老中医:mysql-ops-8.0 Skill 实战指南
一键巡检 9 大类 50+ 检查项,3 秒定位锁等待,20 秒生成完整 Markdown 巡检报告。从「敲 SQL 敲到手抽筋」到「一句命令搞定一切」,就差这个 skill。
为什么要做这个 Skill?
做 DBA 或运维的兄弟应该都懂这种痛——
半夜告警响了,你眯着眼爬起来,连上 MySQL,开始敲:
SHOW PROCESSLIST;
SELECT * FROM information_schema.innodb_trx;
SELECT * FROM performance_schema.data_lock_waits;
SHOW ENGINE INNODB STATUS\G
-- ... 手抖敲错了还得重来
写得多了,你可能会存一些 SQL 脚本放到某个角落里,但到了真正用的时候,「那个查锁等待的 SQL 我放哪了?」「这个查慢查询的 SQL 在 MySQL 5.7 和 8.0 里还不一样」……然后又回到手敲的路上。
于是有了 mysql-ops-8.0 这个 skill——把 50+ 个常维检查 SQL 封装成一个可交互、可一键巡检的运维工具包。
另类玩法:
# 如果现网数据库不方便连接AI,可将这个SKILL安装在你的内网数据库主机中
bash scripts/run_ops_query.sh run_all ./report
巡检完成: ./report/mysql-inspection-2026-06-04-174352.md
#然后将./report/mysql-inspection-2026-06-04-174352.md 下载下来,发给AI工具做深度分析
它能干什么?
一句话:9 大类、50+ 项检查,支持按需查询和全自动巡检。
| 分类 | 覆盖内容 | 典型场景 |
|---|---|---|
| 📋 实例信息 | 版本、参数、插件、字符集 | 接手新实例第一件事 |
| 💾 容量管理 | 库大小、大表、碎片、自增 ID、无主键表 | 磁盘告了,谁吃掉的? |
| 🔗 连接会话 | 来源分布、活跃/空闲连接 | 连接数飙了,谁在连? |
| 🔒 锁与事务 | 行锁等待链、MDL 锁、死锁、活跃事务 | 业务卡了,谁锁了谁? |
| ⚡ SQL 性能 | 慢查询、全表扫描、无索引 SQL、未使用索引 | 接口慢,哪条 SQL 有问题? |
| 🛢️ InnoDB | 引擎状态、行锁统计、Buffer Pool | InnoDB 内部发生了什么 |
| 🔄 主从复制 | 从库状态、半同步、延迟、Binlog | 主从断了,从哪接上? |
| 🔐 安全 | 账号列表、密码过期、认证插件 | 安全合规检查 |
| 📊 性能快照 | 全局状态变量一览 | 拿基线,看趋势 |
快速上手
1. 配置连接
vi ~/.workbuddy/skills/mysql-ops-8.0/assets/db_config.env
填入你的 MySQL 信息:
MYSQL_HOST=10.xx.xx.xx
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASSWORD=******
2. 单条查询
# 查锁等待
bash ~/.workbuddy/skills/mysql-ops-8.0/scripts/run_ops_query.sh row_lock_waits
# 查慢查询 Top 10
bash ~/.workbuddy/skills/mysql-ops-8.0/scripts/run_ops_query.sh slow_sql_top10
# 查哪些表没主键
bash ~/.workbuddy/skills/mysql-ops-8.0/scripts/run_ops_query.sh no_pk_tables
3. 一键巡检
#存放当前目录
bash ~/.workbuddy/skills/mysql-ops-8.0/scripts/run_ops_query.sh run_all
#指定存放目录
bash ~/.workbuddy/skills/mysql-ops-8.0/scripts/run_ops_query.sh ./report
跑完生成 mysql-inspection-YYYY-MM-DD-HHmmss.md,9 大类全部覆盖,直接 Markdown 渲染看板。
实战:用这个 Skill 巡检一台生产库
以我实际巡检 10.xx.xx.80:3306(MySQL 8.0.46)为例,跑完 run_all 后直接挖出了几个藏得很深的问题。
🔴 问题一:DELETE 慢到离谱,根因藏了三层
巡检报告"SQL 性能分析"里直接暴露了:
| db | query | avg_latency |
| wgcloud | DELETE FROM `SYS_LOAD_STATE` WHERE `CREATE_TIME`.. | 1.62s |
| wgcloud | DELETE FROM `NETIO_STATE` WHERE `CREATE_TIME`.. | 1.57s |
| wgcloud | DELETE FROM `MEM_STATE` WHERE `CREATE_TIME`.. | 1.42s |
| wgcloud | DELETE FROM `CPU_STATE` WHERE `CREATE_TIME`.. | 1.33s |
然后看「全表扫描排行」:
| db | table_name | rows_full_scanned |
| wgcloud | sys_load_state | 39,324,621 |
| wgcloud | netio_state | 15,283,082 |
再看「数据库大小列表」:
| SCHEMA | total_mb | free_mb | 碎片率 |
| wgcloud| 206.54 | 839.00 | 406% |
三层数据串起来,根因就出来了:
CREATE_TIME 列缺索引 → DELETE 全表扫描 → 每次扫描扫出大量空洞 → 碎片越积越多 → DELETE 越来越慢(恶性循环)
如果只查一张表、只跑一条 SQL,很容易只看到"DELETE 慢了"或"碎片多了",但很难把这三层关系串成因果链。巡检报告把容量 + 性能 + 物理存储同时看完,根因一目了然。
🟠 问题二:Buffer Pool 才 128MB,但你都不知道
| innodb_buffer_pool_size | 134217728 | -- 128MB
这台库数据总量 226MB,128MB BP 只能缓存不到 60% 的热数据。更要命的是——wgcloud 的全表扫描 DELETE 在不断把热数据从 BP 里踢出去(Buffer Pool 污染),命中率虽然写着 99.96%,但 Innodb_buffer_pool_reads = 64998 意味着物理读还是不少。
修复也简单:SET GLOBAL innodb_buffer_pool_size = 536870912; 一条命令搞定。
🟠 问题三:你敢信?24 张表没主键
| db | TABLE_NAME |
| n9e_v6 | task_scheduler |
| n9e_v6 | task_host_doing |
| imsobserva | monitor_minute_request |
| imsobserva | monitor_starttime_endpoint_stats |
| ... (还有 20 张) |
InnoDB 的表没有主键,MySQL 会自己造一个隐藏的 6 字节 ROW_ID。看着能用,但:
- 写入时每次都要维护这个隐藏列
- ROW 格式 binlog 下,UPDATE/DELETE 只能全表扫描定位行,复制延迟翻倍
- 很多在线 DDL 操作直接不支持
这些坑不查不知道,一查吓一跳。
安装方式
# 如果已经有 WorkBuddy skill 环境,skill 文件已在:
ls ~/.workbuddy/skills/mysql-ops-8.0/
# 配置连接后直接用
vi ~/.workbuddy/skills/mysql-ops-8.0/assets/db_config.env
bash ~/.workbuddy/skills/mysql-ops-8.0/scripts/run_ops_query.sh run_all
# 如果现网数据库不方便连接AI,可将这个SKILL安装在你的内网数据库主机中
bash scripts/run_ops_query.sh run_all ./report
巡检完成: ./report/mysql-inspection-2026-06-04-174352.md
#然后将./report/mysql-inspection-2026-06-04-174352.md 下载下来,发给AI工具做深度分析
最低权限要求:
GRANT SELECT ON *.* TO 'ops_user'@'%';
GRANT PROCESS, REPLICATION CLIENT, SHOW DATABASES ON *.* TO 'ops_user'@'%';
最后
做运维这个行当,工具永远不嫌多。一个好的工具不是它能做多少事,而是在火烧眉毛的时候,你能不能 3 秒之内想起来怎么用它。
mysql-ops-8.0 的设计目标就是这个:场景分类清晰、一条命令直达、输出格式统一。不用翻文档,不用手敲 SQL,不用记参数。
如果你也在用 WorkBuddy 做 MySQL 运维,试试看。有问题、有想法、想加新的检查项,随时来聊。
写于 2026-06-04,巡检了一台跑了 11 天的 8.0.46 实例,发现了 839MB 碎片、4 条秒级 DELETE、24 张无主键表。这些问题在你下一次巡检之前,很可能已经藏了很久了。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)