适用范围与验证状态
本文以 Archery 管理 MySQL 变更工单为例,验证等级为 PENDING,不表示已接入真实数据库。先登记 Archery、数据库和审核组件版本,确认查询、审核、执行、备份各项能力。Archery 的支持矩阵因数据库而异,不能将 MySQL 的能力推广到 PostgreSQL、Redis 等所有后端;审核引擎可用也不等于业务语义正确。Archery 官方功能及依赖清单
工单与权限准备
申请人填写变更编号、实例身份、库表、SQL 文件摘要、影响行数上限、业务窗口、执行人和验收人。读取、审批、执行职责分开,连接账户按实例和用途最小授权。工单中只保存凭据引用,不粘贴密码、生产个人信息或完整数据样本;导出和审核日志同样受访问与保留策略约束。
只读预检与排障分支
在已授权的目标连接中核对实例和权限,下例不会修改业务表。结果需与资产台账对应,角色或实例不符立即停止。
SELECT @@hostname, @@port, @@version, DATABASE(), CURRENT_USER();
SHOW GRANTS FOR CURRENT_USER;审核失败先区分 SQL 规则、解析器不支持、数据库权限、审核服务连通或版本不兼容,不通过关闭所有规则来放行。对锁等待、扫描量和变更耗时设定业务确认的阈值;预估执行计划不代表真实执行一定不阻塞,必要时在隔离副本使用脱敏数据演练。
备份不等于恢复证明
记录受影响对象、备份时间、存储位置、访问人、日志覆盖区间与恢复耗时。在隔离环境证明能够恢复必要数据,再评审可接受的丢失窗口。goInception 生成回滚语句的能力有配置和语句支持前提,不是任意变更的一键撤销保证;不要把备份任务绿色图标当作已完成恢复演练。goInception 项目说明
审批后执行与结果不明
审批针对确定的 SQL 摘要、目标和窗口;改动任一项需重新审阅。执行前再次比对当前库表结构、负载及维护冲突,分批以实际影响行数、耗时、锁和复制状态决定是否继续。页面超时或网络中断时先查询工单、执行记录与数据库事实,确认未提交后才能评估重试,禁止直接再点一次执行造成重复变更。
不可逆边界与停止回退
MySQL 多种 DDL 会引起隐式提交,普通事务 ROLLBACK 不能通用撤销 ALTER TABLE 或已提交写入。出现未知执行状态、超出影响范围、锁阻塞升级、备份缺失或数据校验失败时停止后续批次。未执行的工单可取消;已提交部分要按确认后的补偿、备份恢复或前向修复方案另行审批,并评估新业务写入的冲突,不能盲目套用旧值覆盖新值。MySQL 隐式提交语句
验收与交接
验收由实际执行对象、工单状态、影响行数、结构差异、抽样数据和业务请求共同完成;记录复制追平及观察窗口,不仅是 SQL 返回成功。失败和部分成功都应保留时间线、执行人、停止原因与后续责任人。完整操作见SQL 审核变更场景,组件边界见SQL 审计运行手册。