Carry の Blog Carry の Blog
首页
关于
  • Nginx
  • Prometheus
  • Iptables
  • Systemd
  • Firewalld
  • Docker
  • Sshd
  • DBA工作笔记
  • MySQL
  • Redis
  • TiDB
  • Elasticsearch
  • OpenClaw
  • Hermes Agent
  • Claude Code
  • MySQL8-SOP手册
  • MySQL实战45讲学习笔记
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Carry の Blog

好记性不如烂键盘
首页
关于
  • Nginx
  • Prometheus
  • Iptables
  • Systemd
  • Firewalld
  • Docker
  • Sshd
  • DBA工作笔记
  • MySQL
  • Redis
  • TiDB
  • Elasticsearch
  • OpenClaw
  • Hermes Agent
  • Claude Code
  • MySQL8-SOP手册
  • MySQL实战45讲学习笔记
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • OpenClaw

  • Hermes-Agent

    • Hermes Agent 概述
    • Hermes Agent 实战 01|架构总览:用一个 Agent 管一整个机房
    • Hermes Agent 实战 02|多 Profile 与超管模型:一个 Agent 安全地管十几台机器
    • Hermes Agent 实战 03|Gateway 运维:systemd、裸进程,和一个 Telegram token 撞车
    • Hermes Agent 实战 04|模型路由实战:config 全解、thinking 注入与 401/503 源码级根因
    • Hermes Agent 实战 05|技能工程:写、去重、pin,与每周自我审计
    • Hermes Agent 实战 06|让 Agent 自己上班:cron 驱动的无人值守巡检
    • Hermes Agent 实战 07|数据库实战:可直接抄走的 SQL Server 巡检脚本
    • Hermes Agent 实战 08|量化交易助手:持仓盈亏、网格减仓,与「没开单」的真相
    • Hermes Agent 实战 09|接入 OpenWebUI:把每个 Profile 暴露成一个「模型」
    • Hermes Agent 实战 10|升级不翻车,与给上游提 PR:一个被冲掉三次的修复
    • Hermes Agent 实战 11|踩坑合集:当「手动 rm」从来不是真正的修复
    • Hermes Agent 实战 12|工具链外延:用 AI 运维 AI,与这个系列的诞生
    • Hermes Agent 实战 13|旗舰篇:让 Agent 从零部署并灾难恢复一个 7 节点生产集群
    • Hermes Agent 实战 14|跨 Profile 消息路由与自托管服务巡检:两个被忽略的边界
    • Hermes Agent 实战 15|告别临时 RAG:用 Karpathy 的 LLM Wiki 给 Agent 装上可生长的长期记忆
    • Hermes Agent 实战 16|给 AI Agent 平台做可观测:多 profile 服务的指标、日志与告警设计
    • Hermes Agent 实战 17|自建 ES 集群 vs 托管 RDS:纯成本量化推导
    • Hermes Agent 实战 18|MySQL 8 生产 SOP 是怎么长出来的
      • SOP 不是写出来的,是改出来的
        • 为什么第一轮草稿必然错误
        • 为什么必须定期回顾
      • 三层结构:手册、检查清单、警戒红线
        • 手册层:讲清「为什么」
        • 检查清单层:确保「不遗漏」
        • 警戒红线层:防止「人为事故」
      • 全系列导航索引
        • 按场景快速导航
        • 按角色快速导航
      • 坑:SOP 编写者的典型陷阱
        • 坑 1:过度工程化
        • 坑 2:脱离生产现场
        • 坑 3:没人维护的「僵尸 SOP」
      • 可复用要点
      • 下一步
  • Claude-Code

  • LLM推理服务

  • AI-Agent
  • Hermes-Agent
Carry の Blog
2026-08-27
目录

Hermes Agent 实战 18|MySQL 8 生产 SOP 是怎么长出来的原创

一个 DBA 团队接手一套新数据库环境,往往面临这样的困境:

  • 新成员不知道自己该检查什么、不能碰什么
  • 同样的故障 months 后再次发生,处置流程却和前一次完全不同
  • 凌晨 3 点的告警没人敢动,因为"上次老张就是这么弄挂的"

这些问题的根因不是技术能力不足,而是知识沉淀的方式错了。日志和脚本散落在各人的 home 目录,踩过的坑随着人员流动而流失。本文以 MySQL 8 运维为例,讲述一套生产级 SOP(Standard Operating Procedure)是如何从零生长出来的,以及怎样用它把团队从「救火模式」切换到「预防模式」。

版本说明

本文配套的 MySQL 8-SOP 系列共 9 篇,覆盖从环境准备到故障处置的完整生命周期。本文是方法论索引页,可通过下文「导航索引」快速定位具体章节。


# SOP 不是写出来的,是改出来的

很多团队把 SOP 当作一次性文档任务——指派一个人写,写完后放进 Wiki 就不再触碰。这样的 SOP 有两个致命缺陷:脱离现场 和 抗拒变化。

# 为什么第一轮草稿必然错误

SOP 的第一版永远是最危险的。它基于「理想环境」假设,而生产环境是活的:

  • 你写的磁盘分区方案,现场的 RAID 控制器不支持
  • 你规定的连接池 100,业务高峰来了 300
  • 你设计的故障切换流程,没考虑到某个中间件有 30 秒连接保持

第一层生长:从「我写完」到「我用过」

SOP 必须经过至少一次真实现场的验证。验证的标志是:能按照 SOP 的指令,不看其他资料,让一个合格的初级 DBA 完成操作。

在这个验证过程中,你会发现:

  • 第 3 步的返回值和第 4 步的输入对不上
  • 某个命令需要 root,但给出的示例却用 mysql 用户
  • 某张表的字段名和实际库不一致

这些错误必须在 SOP 上直接修订,而不是口头传播修正。

# 为什么必须定期回顾

MySQL 版本在升级,业务形态在变化,团队在成长。一套一年前写的 SOP,如果不回顾,会变成有文档的乱局——新人以为照着做就行,实际上每一步都可能踩雷。

第二层生长:从「用过」到「持续迭代」

建议的回顾节奏:

触发条件 回顾动作
每季度 SOP 作者或使用者在团队内部分享「这篇 SOP 最近救过我们几次」
每次故障后 复盘是否 SOP 有盲区或错误,24 小时内更新
每次重大变更前 检查 SOP 是否覆盖新环境(新实例规格、新网络拓扑)
每次版本升级后 检查命令是否仍然适用(如 MySQL 8.0.23 后 CHANGE MASTER TO 已弃用)

# 三层结构:手册、检查清单、警戒红线

有效的 SOP 不是一本小说,而是一套分层体系:

SOP 体系
├── 手册(Handbook):完整的背景和原理说明
├── 检查清单(Checklist):可逐项打勾的执行项
└── 警戒红线(Guardrail):绝对禁止的操作和告警阈值
1
2
3
4

# 手册层:讲清「为什么」

手册回答的是「这个参数为什么要这么设」。例如:

innodb_buffer_pool_size 设为物理内存的 60%,而不是 90%。原因是 MySQL 还有其他内存消耗(线程栈、排序缓冲、Binlog cache),如果 Buffer Pool 占满,会触发 OOM;60% 是在性能和安全之间的折中,在 64GB 内存节点上实测,90% 配置在并发高峰期被 OOM killer 终止了 3 次。

手册的价值在于培养人,而不是控制人。当执行者理解原理,他就能在异常情况下做出正确判断。

# 检查清单层:确保「不遗漏」

清单是 SOP 最频繁被使用的形态。它的设计原则是:

  • 每一项都可验证:不是「检查网络」,而是「ping <INTERNAL_IP> 延迟 < 2ms"
  • 有序号依赖关系:步骤 3 必须在步骤 2 之后,必须有明确的等待/验证条件
  • 有状态标记:已执行 / 已验证 / 有异常 / 已记录

一个典型的 MySQL 安装清单:

# MySQL 8 新实例搭建检查清单 v1.3

## 环境准备
- [ ] 服务器:确认规格 ≥ 4C16G,磁盘类型 SSD/NVMe
- [ ] 系统:CentOS 7.9+ / Rocky 8,内核 3.10+,SELinux 已审查
- [ ] 网络:firewalld 已放行 3306,节点间延迟 < 2ms(ping -c 10)
- [ ] 目录:/data/mysql/{data,logs,binlog,slowlog} 已创建,属主 mysql:mysql,权限 700

## 软件安装
- [ ] Repository:已配置 mysql80-community-release
- [ ] 安装包:mysql-community-server-8.0.x 已安装
- [ ] 服务:mysqld 已添加到开机自启

## 初始化配置
- [ ] my.cnf:已按模板部署,server_id 全局唯一(检查 /etc/my.cnf.d/ 下无冲突)
- [ ] 初始化:mysqld --initialize-insecure 成功,临时密码已记录
- [ ] 启动:systemctl start mysqld 成功,无 ERROR 级日志

## 安全基线
- [ ] root 密码:已修改为强密码(16位随机),存储在密码保险箱
- [ ] 远程 root:已确认禁止(root@'localhost' 限定)
- [ ] 复制账户:repl@'10.0.%' 已创建,权限 REPLICATION SLAVE + CLIENT
- [ ] 防火墙:已限制源 IP,非业务网段不可达 3306

## 复制配置(如为从库)
- [ ] SOURCE_HOST:指向正确的主库,SOURCE_AUTO_POSITION = 1
- [ ] 复制线程:START REPLICA 成功,Seconds_Behind_Master < 5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

# 警戒红线层:防止「人为事故」

红线是绝对禁止的操作,违反即触发惩罚机制(从警告到禁止操作权限)。红线的设立标准是:历史上发生过,且后果严重。

MySQL 运维的典型红线:

红线 理由 历史教训
禁止在生产环境执行 ALTER TABLE 无 ONLINE 属性的大表操作 会锁表,导致业务长时间 unavailable 2024-Q1,某业务 ALTER 一张 200GB 表,锁表 47 分钟
禁止在无备份的情况下执行 TRUNCATE 或 DROP 无法回滚,误操作即永久丢失 2023-Q4,误删财务月结表,从异地备份恢复耗时 8 小时
禁止直接修改 mysql 系统库的表 可能破坏权限一致性,导致无法连接 2023-Q2,手动 update mysql.user 导致认证崩溃
禁止在从库直接写入(无 read_only 或 super_read_only) 导致主从数据不一致,故障切换时丢失数据 2024-Q2,从库被应用误写,切换后丢失 2 小时数据
禁止在高峰期(9:00-21:00)执行无索引条件的 DELETE 全表扫描导致 CPU/IO 打满 2024-Q1,DELETE FROM logs WHERE create_time < '2023-01-01' 拖垮集群

# 全系列导航索引

本文配套的 MySQL 8-SOP 系列共 9 篇,按生产环境生命周期组织。以下索引说明何时读哪篇、每篇解决什么问题。

# 按场景快速导航

你在做什么 应该读哪篇 关键交付物
准备新环境,规划服务器 01. 概述 + 02. 环境准备 硬件基线、系统参数、检查清单
安装 MySQL,初始化集群 03. 安装部署规范 my.cnf 模板、数据目录结构、安全初始化
配置主从复制,做高可用 04. ReplicaSet 高可用配置 GTID 自动定位、半同步复制、切换演练清单
日常运维,看监控、巡检查 05. 监控与日常维护 核心指标列表、Prometheus/Grafana 配置、维护任务日历
出故障了,需要排查 06. 故障处理手册 故障分类树、诊断命令、紧急预案
加固安全,审计权限 07. 安全与权限管理 最小权限模型、SSL 配置、审计规则
扩容或升级版本 08. 扩展与升级方案 只读节点添加流程、滚动升级步骤、回滚方案
查命令、找参数、看资源 09. 附录 命令速查表、参数对照表、官方文档链接

# 按角色快速导航

角色 推荐阅读顺序
新人 DBA 01 → 02 → 03 → 09(先看全貌,再动手)
值班 DBA 06 → 05 → 07(先会救火,再会预防)
架构师 01 → 08 → 04 → 07(先看扩展性,再看可用性)
安全审计 07 → 06 → 05(安全 → 故障 → 监控)

# 坑:SOP 编写者的典型陷阱

# 坑 1:过度工程化

症状:SOP 写了 50 页,包含大量原理阐述,执行者迷失在文字中找不到命令。

根因:混淆了「培训教材」和「操作规程」。培训教材讲为什么,操作规程讲做什么。

解药:采用「三层结构」分离。原理进手册,命令进清单,禁止事项进红线。执行者拿着清单就能干活,想深入时再去翻手册。

# 坑 2:脱离生产现场

症状:SOP 在测试环境验证通过,一到生产就出错。

根因:测试环境和生产环境的差异被低估:数据规模、网络延迟、并发压力、权限配置。

解药:SOP 必须标注验证环境的信息:

>>> 本 SOP 验证环境
- MySQL 版本:8.0.34
- 操作系统:CentOS 7.9
- 数据规模:1.2 TB
- 硬件规格:32C128G,NVMe SSD
- 验证时间:2026-08

⚠️ 不同环境可能需要调整:innodb_buffer_pool_size、max_connections、并行复制线程数
1
2
3
4
5
6
7
8

# 坑 3:没人维护的「僵尸 SOP」

症状:SOP 写了第一版,作者离职后无人更新,新人照着做踩坑。

根因:SOP 被视为「文档」而非「代码」。代码有版本控制、有 owner、有 review,文档没有。

解药:把 SOP 当作代码管理:

  • 每个 SOP 有明确的 owner(负责更新)
  • 修改走 PR/MR,需要另一个人 review
  • 有变更记录,说明每次修改的原因
  • 定期 review(如每季度标记为「已验证」或「需更新」)

# 可复用要点

  1. SOP 的生命线是迭代:第一版必然错误,必须经过现场验证和持续回顾。
  2. 三层结构分离:手册讲原理,清单讲执行,红线讲禁忌——别把这三者混在一起。
  3. 检查清单必须可验证:不是「检查磁盘」,而是「df -h /data 使用率 < 80%」。
  4. 红线基于历史教训:每一条红线背后都必须有真实的事故案例。
  5. SOP 即代码:有 owner、有 review、有版本、有报废机制。

# 下一步

  • 返回 Hermes Agent 系列目录
  • 下一篇:自建 ES vs 托管 RDS 纯成本量化推导

🤖 Agent 可直接解析的元数据块(点击展开)
{
  "_meta": {
    "doc_version": "2026-08-27",
    "article_id": "hermes-18-mysql8-sop-methodology",
    "profile_context": "any",
    "estimated_setup_time": "阅读 15min;编写 SOP 首版 4h"
  },
  "quick_start": {
    "step_1": "阅读 01.概述 了解 SOP 覆盖范围",
    "step_2": "根据你的角色选择阅读顺序(新人/值班/架构/审计)",
    "step_3": "在 03.安装部署规范 获取 my.cnf 模板",
    "step_4": "在 06.故障处理手册 建立应急响应清单",
    "step_5": "为自己团队编写第一层 SOP:10 条红线条款"
  },
  "safety_rules": [
    "SOP 必须经过生产环境验证才能正式发布",
    "每次故障后 24 小时内必须复盘并更新 SOP",
    "SOP 必须标注验证环境(版本/规格/数据规模/时间)",
    "红线条款必须有历史事故案例支撑",
    "SOP 必须有明确 owner 和定期 review 机制"
  ],
  "navigation": {
    "overview": "01.概述.md",
    "environment": "02.环境准备.md",
    "installation": "03.安装部署规范.md",
    "replicaset": "04.ReplicaSet高可用配置.md",
    "monitoring": "05.监控与日常维护.md",
    "troubleshooting": "06.故障处理手册.md",
    "security": "07.安全与权限管理.md",
    "scaling": "08.扩展与升级方案.md",
    "appendix": "09.附录.md"
  },
  "verification": {
    " checklist_format": "检查项必须以 [ ] 开头,可验证(有明确的通过标准)",
    "redline_basis": "每条红线条款必须有事故编号或时间佐证",
    "environment_note": "所有参数必须附带验证环境信息"
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38

AI Agent 使用指南:

  • 当用户说「我要写 MySQL SOP」→ 引导执行 quick_start.step_1-5,输出三层结构模板
  • 当用户说「SOP 怎么验证」→ 强调 safety_rules 第一条:必须生产验证
  • 当用户说「参考哪篇」→ 根据角色返回 navigation 对应路径
#AI Agent#Hermes#MySQL#SOP#运维方法论#生产规范
上次更新: 8/27/2026

← Hermes Agent 实战 17|自建 ES 集群 vs 托管 RDS:纯成本量化推导 Claude Code 概述→

最近更新
01
TiKV 也有"寿命":一次 795 天 tokio 定时器溢出 panic 的复盘与预警建设 原创
08-27
02
DragonflyDB 生产实践|58天稳定运行的轻量缓存方案 原创
08-27
03
Hermes Agent 实战 17|自建 ES 集群 vs 托管 RDS:纯成本量化推导 原创
08-27
更多文章>
Theme by Vdoing
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式