数据库迁移验收方法
控制台完成是任务状态,不是数据正确性的结论
数据库验收必须由迁移工具证据、数据库独立查询和业务验证共同组成。单一行数、单次校验和或控制台状态都不能覆盖对象缺失、权限差异、TTL 变化和业务语义错误。
| 层级 | 要回答的问题 | 最低证据 |
|---|---|---|
迁移任务 | 是否有失败、跳过或重试 | 阶段状态、失败对象、最终位点、任务日志 |
数据库对象 | 结构和运行对象是否完整 | 对象清单、DDL 差异、扩展/模块/权限清单 |
数据内容 | 核心数据是否一致 | 行数或 Key 数、分段校验、抽样与聚合 |
业务语义 | 应用行为是否一致 | 核心查询、事务、TTL、金额、排序和时区测试 |
生产能力 | 目标能否承载真实负载 | 压测、慢查询、延迟、错误、容量和告警 |
恢复回滚 | 失败后能否控制损失 | 备份恢复、回切、差异处理和业务补偿演练 |
- 库表、索引、外键、视图、触发器、事件、函数和存储过程
- 字符集、排序规则、时区、
sql_mode、默认值、自增和大小写行为 - 无主键表、大表、热点表、Binlog 最终位点和复制错误
- 金额精度、事务隔离、锁、连接池、只读实例和慢查询
- Schema、分区、索引、约束、物化视图、大对象、外部表和表空间
- 角色、成员关系、Owner、默认权限、行级安全、函数和过程
- 扩展名称与版本、Sequence 当前值、复制槽、LSN 与 DDL 差异
- 编码、排序、时区、数组、JSON、事务、锁和查询计划
原生逻辑复制不自动复制 DDL、Sequence 和大对象,必须列入独立证据。PostgreSQL 逻辑复制限制
- 每个 DB/分片的 Key 数、类型、TTL、永久 Key 和内存分布
- String、Hash、List、Set、Sorted Set、Stream、Lua、事务与模块数据
- 大 Key、热 Key、hash tag、槽位、过期、淘汰、命中率和延迟
- 非幂等命令重试、队列顺序、锁、会话、计数和客户端重定向
RDB 与 AOF 的数据损失窗口和恢复行为不同,备份存在不代表目标时间点可恢复。Redis 持久化
- 核心账务、订单、权限和状态数据优先使用业务对账,不只做随机抽样。
- 大表按主键或时间区间分段,保存范围、查询、时间、源目标结果和差异处置。
- 对易变化数据先建立停写或一致性时点,避免比较两个不同时间的正确结果。
- Redis 抽样同时记录类型和 TTL;只比较序列化值会遗漏过期语义。
- 发现差异时保留原始证据,区分未迁移、延迟、业务继续写入、查询口径和真实错误。
可使用验收证据与抽样和数据抽样计算器确定记录方式,但样本量不能替代核心业务全量对账。
- 阻断对象和数据差异已清零,或有负责人批准的明确例外
- 增量延迟达到阈值,最终位点和停写时间已经记录
- 核心业务读写、事务和后台任务已通过目标端烟雾测试
- 目标备份、恢复、监控、告警、容量和权限已验证
- 回滚触发器、决策人、目标端新写入处理和最长决策时间明确
切换后持续观察业务错误、数据库连接、锁、慢查询、复制、缓存命中、内存、磁盘和告警。只有观察期通过、差异闭环、备份恢复有效且业务签字后,才能结束迁移任务、撤销临时权限与白名单,并进入源端退役门禁。
核验日期:2026-07-14。本方法提供证据框架,不替代数据库厂商校验、审计要求或业务数据负责人的最终批准。
Built with