如果你是一名后端开发或者DBA,大概率经历过这种场景:开发在群里喊了一句“帮忙在订单表加个索引”,然后DBA手动登到生产库执行,执行完在聊天记录里回一句“好了”。整个过程看起来没什么问题,但半年后复盘某个线上事故时,你根本找不到是谁在什么时间改了什么,这就是典型的SQL变更失控。我这次要聊的,就是GitHub上8.8k Star的一个轻量级方案,一个简单高效的MySQL审核平台,社区里叫它Yearning。它解决的问题很具体:把“提交SQL、审核SQL、执行SQL、留痕、回滚”这件事搬到Web页面上,让每一次数据库变更都有流程、有记录、可追溯。
这个平台适合谁?如果你所在团队还处于“SQL变更靠口头沟通”的阶段,或者你想在业务库和开发之间加一道可控的审核层,那这篇内容值得看完。我会从部署、建数据源、走通一条工单、到常见坑位,把整个实操链路拆开讲,最后补上我自己落地过程中踩过的坑和调整建议,希望对正在调研或准备引入审核平台的你有帮助。
1. 先说清楚:为什么SQL上线需要一个“审核平台”
1.1 没有审核的生产变更是高风险裸奔
很多小团队对SQL审核的第一反应是“我们有DBA人工看,不需要平台”。这个想法在项目早期成立,但等库多了、人多了之后就会出问题。你有没有遇到过这些情况:一条 UPDATE 忘记带 WHERE,直接把整张表的数据改掉;一条 ALTER TABLE 在大表上执行,导致业务锁表;开发在测试环境执行没问题,但同一个表在正式环境的数据量差了100倍,执行计划直接失效。
这些事故的根源并不是某个人技术不行,而是SQL变更缺少一层可感知、可拦截的机制。人工审核能解决一部分问题,但人的注意力是有限的,尤其是当一天要处理几十个工单的时候,很容易漏掉关键风险点。审核平台的作用不是取代DBA,而是把“经验判断”沉淀成自动检查规则,把“通过了就执行”变成可留痕的流程。
Yearning这类平台解决的核心问题,就是让SQL不再绕过流程直接作用到生产库。每次变更都必须经过提交、自动检测、人工审核、执行、记录几个环节,中间任何一步出了问题都能找到人,也能通过回滚机制把影响降到最低。
1.2 这个平台到底干了什么
用一句话概括Yearning的能力:它把MySQL变更和查询统一收口到一个Web平台里,前端面向开发者和DBA,后端连接你的业务数据库。开发者在平台上提交SQL工单,平台会先用内置规则扫描一遍,指出哪些地方有风险,然后由有权限的审核人确认是否放行,最后平台再代替人执行到目标库。
这里还要提一下Yearning核心的几个功能模块。第一是SQL审核,支持DDL和DML两大类,DDL的典型场景是加索引、改表结构,DML的典型场景是数据订正、批量更新;第二是SQL查询,支持把查询权限也收进来,并且所有查询日志可审计;第三是回滚,基于binlog解析生成反向SQL;第四是权限管理,可以将用户划分为admin、DBA、开发人员、查询人员等角色。
功能不少,但整个平台是Go写的,部署形态很轻,这正好是它Star数高的原因之一。很多团队不需要Archery那种重型全家桶,只想要一个能快速跑起来、把审核流程先建立起来的工具,Yearning在这个位置是非常合适的。
1.3 为什么我建议中小团队先选轻量方案
我在调研审核工具的时候其实对比过好几个方案。有的平台功能全、界面复杂,但对硬件和依赖要求也高,光初始化配置就能让一个新手折腾一整天;有的平台没有Web界面,需要自己在命令行里做二次开发;还有一些只是语法审核器,并没有完整工单流。
Yearning的定位很明确,就是“简单高效”。8.8k Star这个数字说明它的社区认可度很高,但真正打动我的是它能让团队在半小时内把一套审核流程跑通,而不是花两周去研究文档。对于20人以下的后端团队、两三个DBA兼职维护十几个库的场景,轻量方案远比重型平台更容易落地。
这里我也想劝一句:不要为了追求功能齐全而上重平台。审核流程的核心是先让所有变更过一道门,规则可以后续慢慢加,流程可以逐步优化。一个能坚持用下去的轻量平台,比一个功能强大但没人愿意配置的重平台有价值得多。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 部署之前,先把这三个边界搞清楚
2.1 元数据库和业务库是两个概念
部署Yearning之前,容易被搞混的一点是:它自身也需要一个MySQL实例来存平台数据,比如用户信息、工单记录、审核日志。这个存储平台自身数据的库,叫元数据库,和你后面要接入审核的业务数据库不能混为一谈。
我见过有人把Yearning连到业务主库上,结果一启动就把业务库里建了一堆 yearning_ 开
