上线对开发来说,是一个历险的过程,即使上线前准备的多么充分,也可能在线上发现问题。
最近上了一个项目,在测试环境和预发布环境平稳运行超过3个月,上线是预警系统发生大量短信报错,紧急查找bug,
发现问题原因:
生产数据库的一个表中的字段a的长度不一致,测试环境和预发布环境该字段的长度是20,上线时使用的脚本是预发布环境的脚本,回归脚本时发现生产上该字段的长度是30.
影响:
所幸a字段只在监控系统使用,且测试环境和预发布环境中的预警是关闭的,故运行很久没有发现问题。
猜测可能的原因:
该字段最早只有长度是20,后面因业务需要扩充到30个字段,但没有和我这边沟通而是直接联系dba修改导致。具体原因也不便追溯。
反思:
本次上线发生事故,主要责任是我,没有对上线的脚本和生产脚本进行严格的检查(多次检查生产脚本是否和上线脚本是否一致,但忽略了长度的检查)。
对自己要求不够严格,以为在测试和预发布环境运行那么久,所以粗心大意了。
对以后的要求:
1. 数据库脚本一定要严格审查,使用compare等对比工具而不是眼睛,毕竟人容易犯错。
2. 对待上线,再谨慎也不为过。
以此文谨记!
原文:http://www.cnblogs.com/davidwang456/p/5003262.html