今年六月滦平县一家做食品加工的工厂要对用了五年的生产管理系统做改版。他们找了一家新的开发商来做结果新系统上线之后发现有两周的生产记录对不上库存数据也乱了。厂长急得不行给我打电话问能不能帮忙恢复。这件事让我觉得有必要专门写一篇讲讲软件改版过程中数据安全的问题。
为什么会丢数据
事后我们复盘了一下原因。第一是新旧系统的数据库结构不一样——老系统用的Access数据库新系统用的MySQL字段对应关系没梳理清楚。第二是迁移的时候没有做完整备份——开发商说"直接导数据就行"结果导入过程中出了错原始数据被覆盖了一部分。第三是没有做数据校验——迁移完之后没有人逐项核对数据是否完整准确就直接切到新系统上了。第四是新旧系统并行运行的时间太短——只并行了一天就关掉老系统了有问题根本来不及发现。这几个错误叠加在一起导致了数据丢失。
正确的改版流程应该是什么样的
如果以后你要做系统改版一定要按这个流程走。第一步:全面备份——旧系统的数据库、文件、配置全部打包备份至少保留两份存在不同的地方。第二步:数据梳理——新旧系统的字段一一对应列出映射关系哪些字段能直接转哪些需要转换哪些可以丢弃。第三步:开发迁移脚本——写程序来自动完成数据转换和导入不要手工操作容易出错。第四步:在测试环境先跑一遍迁移然后做数据校验确保数量一致关键字段值正确。武烈河、第五步:新旧系统并行运行至少一到两周两边同时录入数据定期比对。第六步:确认无误后再正式切换切换之后再观察一周。第七步:旧系统数据再保留至少半年以防万一。
数据丢了还能恢复吗
回到滦平那个厂的问题当时的情况是:老系统的备份在新系统上线前被清理掉了(这是最大的失误)新系统的数据库又有部分错误数据。我们的恢复方案是:第一从厂里的其他渠道补数据——纸质生产日报Excel报表MES设备的日志等尽量拼凑丢失的数据。第二对新系统中已有的数据做清洗修复明显错误的记录。第三开发了临时的数据校验工具每天自动检查数据一致性防止再出问题。整个过程花了大约两周时间最终恢复了约85%的丢失数据剩下的15%只能靠人工补录了。厂长说这次教训太深刻了以后再也不敢在数据问题上马虎了。
总结
软件改版中最值钱的是什么?不是新功能不是漂亮界面是你积累了好几年的业务数据。这些数据丢了可能花多少钱都买不回来。所以改版之前别的都可以省唯独备份和数据校验不能省。建议你在做任何系统变更之前都问清楚开发商:你们的数据迁移方案是什么?有没有备份?并行运行多久?怎么校验数据正确性?如果这些问题的答案让你不安那就别急着上线。我可以帮你审核开发商的迁移方案指出潜在的风险点免费的。