
这两年跟不少团队聊数据库治理,一个比较常见的现象是:

大家并不是完全没流程。很多公司已经上了 Yearning、Archery 这类 SQL 审核,生产变更也要求“先提单、后执行”。按理说,数据库变更应该比以前更可控。
但现实往往不是这样。到了生产环境,DBA 还是会遇到这些问题:
所以问题不在于“有没有 SQL 审核”,而在于很多团队把 SQL 审核当成了数据库治理的终点,但它其实只是起点。
先说结论
SQL 审核很重要,但它解决的只是数据库治理里的一部分问题。它主要解决的是两件事:
很多团队从“所有人拿客户端连接生产库”过渡到“先走审核”,已经能显著减少异常变更。
但 DBA 需要面对的,是更复杂的现实。数据库变更管理出现偏差,很多时候不是因为 SQL 本身有多复杂,而是因为整条链路没有闭环。审核只看到了其中一段,而 DBA 需要覆盖的是整个过程。
2.1 执行入口
这是比较常见的问题。很多团队确实要求“生产变更先提审核”,但生产库权限依然会发给研发、测试或者运维。同一个人既可以提审核,也可以在 Navicat、DBeaver 里连接生产库。
这时候 SQL 审核就变成了一种“推荐流程”,而不是“强制流程”。只要执行入口没有统一收口,任何流程都可能被绕开。
DBA 更关注的,其实不是没有制度,而是制度存在,但平台层面没有约束力。
2.2 审批与执行
还有一种情况更隐蔽。有些团队流程看起来比较清晰:
问题在于,审批系统和执行系统是分离的。审批过后,SQL 可能会复制到聊天群、贴到工单里,也可能由 DBA 再复制到客户端中执行。
这意味着什么?意味着审批和执行之间仍然存在“人工跳转”。中间只要复制错、执行错、漏了一条、用了错误环境,风险就会重新出现。
从 DBA 视角,这类问题比较麻烦,因为它不是单一缺陷,而是流程链路断开导致的系统性问题。
2.3 权限模型与责任边界
很多数据库异常,不是因为 SQL 审核没做,而是因为谁能看、谁能改、谁该审批,这些事情本身就没理顺。
常见情况包括:
一旦权限模型和责任边界混乱,SQL 审核再严格,也只是补一层表面控制。
很多非 DBA 角色看数据库变更,关注点通常是“能不能发布成功”。
但 DBA 看问题的方式完全不一样。
DBA 更关心的是:
所以 DBA 对平台的要求,天然不是“多一个审核功能”,而是要有一整套可追踪、可限制、可回溯的机制。
如果没有这层机制,SQL 审核再完善,也很容易沦为“流程存在,但风险照旧”。
做了几年 DBA 以后,我越来越觉得,数据库治理不能只盯着“审核”这个动作,而要看整条链路有没有闭合。
一个相对清晰的闭环,至少应该包括:
只有做到这一步,SQL 审核才算纳入数据库 DevOps 体系,而不是独立挂在外面。

NineData DevOps 产品架构图:SQL 审核只是中间一环,数据库治理更需要把前后链路打通。
最近看 NineData 的数据库 DevOps 设计,我觉得其中有一点比较值得 DBA 参考:
它不是只想做一个 SQL 审核,而是在补“审核前后缺掉的那些环节”。
NineData数据库DevOps:https://www.ninedata.cloud/sqldev
NineData 支持通过开发规范限制生产环境 SQL 窗口中的 DDL/DML。这个动作的意义在于,它解决的是“审核入口有了,但执行入口没收口”的长期问题。
NineData 可以通过规则限制生产库 SQL 窗口中的 DDL / DML,让高风险操作转成 SQL 任务,再经过规范预检和审批流程执行。

创建 SQL 任务并完成审批

再比如它的审批流支持按 Data Owner 自动匹配负责人。这个设计对于数据库少的团队感知不强,但一旦业务库多起来,就很明显。审批人不再需要写死在每条流程里,人员变动时维护成本也低很多。


它覆盖的不只是 SQL 审核,还包括:
这类平台较有优势的地方,不是“比 Yearning 多几个按钮”,而是它更接近 DBA 需要的生产治理闭环。
如果你的团队现在还处在下面这种状态:
因为你们虽然上了 SQL 审核,但并没有建立数据库变更闭环。审核只是一个点,而不是一套机制。而数据库治理要解决的是“这条 SQL 能不能在正确的人、正确的流程、正确的环境里,以可审计、可追踪、可回滚的方式执行”。
对 DBA 来说,是把数据库访问、规范、审批、执行、安全、审计收进一套平台里,让生产变更从“靠经验补位”变成“靠机制约束”。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。