后端开发

改版中的数据库迁移:怎么把老数据安全带过去

2026-11-05 633 次阅读

改版里最让人心里没底的环节就是数据迁移。页面做错了能改,数据弄丢了找不回来。

先画一张映射表

迁移前必须明确:旧库的每个字段,在新库里对应什么。

旧字段 | 新字段 | 处理方式product_name | title | 直接对应product_pic | images | 拆分为多图add_time | created_at | 格式转换price | price_range | 需人工拆分ext_info | specs(JSON) | 解析后重组

画完你会发现三类情况:直接对应的、需要转换的、对不上的。真正麻烦的是第三类,要提前决定是丢弃、合并还是新增字段。

趁迁移清洗脏数据

老库里通常积累了这些问题:

  • 格式不统一:有的电话带区号,有的不带;有的日期是文本
  • 空值和默认值混用:用 0、空字符串、-1 表示"没有"
  • 重复记录:同一个产品录了两遍,ID 不同内容一样
  • 废弃内容:早就下架的产品还留在库里
  • 编码问题:乱码、特殊字符、表情符号

改版是清理这些的唯一好时机。带着脏数据迁移,新系统上线后会一直脏下去。

迁移的三种做法

  1. 脚本一次性导入:适合结构相近、数据量大的情况,快但风险集中
  2. 分批导入加校验:按栏目或时间段分批,每批导入后核对,稳但慢
  3. 人工录入:数据量小或者转换规则复杂时,慢但可控

无论哪种,都要先在测试环境完整跑一遍,确认无误再对生产库操作。

必须保留的信息

这些丢了会很麻烦:

  • 原始 ID:在新表留一个旧 ID 字段,做跳转和排查时非常有用
  • 发布时间:别全部变成迁移当天,历史内容的时间戳是有效信息
  • 分类与标签关系:最容易在迁移中错乱
  • 正文里的图片路径:要批量替换成新地址
  • 附件与下载文件:常常被整个漏掉

验证怎么做

导入完成后按这个顺序检查:

  • 数量对账:新库条数 = 旧库应迁移条数,差一条都要查清楚
  • 抽样比对:随机抽二十条,逐字段对比新旧内容
  • 重点查富文本:图片、表格、链接是否完整
  • 检查关联关系:产品是否还在正确的分类下,案例是否关联到正确客户
  • 跑一次死链扫描:正文里的旧链接要批量替换

回滚准备

迁移前必做的三件事:

1. 完整备份旧数据库,导出文件单独保存2. 旧系统保持可运行状态,不要立刻下线3. 记录迁移脚本和参数,便于重跑或回退

旧库至少保留三个月。上线后如果发现有数据遗漏,还能补救;一旦删掉,就只能靠备份了。

上线后继续观察

头两周要留意这些异常:

  • 用户反馈找不到某个内容:可能是漏迁
  • 页面显示乱码或字段错位:编码或映射问题
  • 搜索搜不到老内容:索引没重建
  • 404 增多:正文里的旧链接没替换干净

数据迁移没有捷径,只有笨功夫:先备份、先映射、先试跑、再核对。省掉任何一步都可能付出代价。

—— 一位做过多次大型迁移的后端工程师

标签

  • 数据库迁移
  • 改版数据搬迁
  • 数据迁移方案