美文网首页
惊心动魄,差点从“删库到跑路”20200331

惊心动魄,差点从“删库到跑路”20200331

作者: 南京小邓子 | 来源:发表于2020-03-31 21:11 被阅读0次

    今天早上在帮用户改数据的时候,在update时忘记加条件就直接执行了,导致某审批记录表审批人全变成了A;

    意识到数据改错了之后,第一时间告诉项目经理,并询问是否有回滚机制,最终确认系统没有安装binlog,无法直接回滚;

    然后想到了数据库备份,很不幸的是由于上周服务器中病毒,数据库自动备份被破坏,没有前一天的数据备份;后来项目经理找到了上周24号的数据库备份;

    然后与项目经理一起梳理逻辑,先将表同步到测试环境,还原24号之前的审批记录,再根据各类情况进行分类,一步步还原:

    (1)还原24号之前的审批记录;

    (2)更新ZB的审批记录,该记录的user_id都是申请人的id; 

    (3)更新CG状态是待提交状态的记录,该记录的user_id都是申请人的id;

    (4)此时还剩下498条数据,其中基本一半是在这一周内(24号-31号之间)的审批过的记录,近一半是当前待审批的记录;

        a.对于在这一周内审批过的记录(is_Approved=1),可以通过流程记录表进行找回

        b.对于另一半当前待审批的记录(is_Approved=0),由项目经理用代码通过cg_id与当前状态查出当前审批人并插入到表中(做标识);

    因为并没有删除数据,只是将审批人改成了admin,所以对于is_Approved=0这类数据这样做是可行;

    现在看可能就几步,但是与项目经理弄了快一天才还原,而且每一步都很小心,各种备份。虽然项目经理及领导并没有批评我,但是这种错误真的不应该出现,就连项目经理也说“平时那么谨慎的人居然...”。这算是工作快四年(2016/05/09-2020/03/31)来第一次犯这种比较大的错误吧,真的很感谢项目经理,一直在帮我解决问题,也没有说我或者抱怨啥的,同事领导啥的真是没话说,当然我自己也进行了反思:

    1.操作生产库一定得谨慎、规范

    之前第一家公司所有生产相关的操作都是需要先数据备份,SQL语句写完后会check;

    2.数据库备份

    生产数据库应每天备份,且在更新或删除数据前,最好人工备份一次,另外应该建立回滚机制,防止误操作;

    3.不要将情绪带到工作中

    早上情绪不太高,然后发现生产系统版本有问题,工作时有些主观了;

    4.SQL语句

    在还原期间有很多SQL语句,嵌套、多表查询等,虽然都能看懂, 但是如果自己写的话需要很长时间,这一方面还有待提升;另外今天也学到了一个新的知识点:如何把查询结果直接生成表,如果查询语句比较复杂的话,生成临时表很方便后续的使用;

    犯错不要仅,重要的是解决问题及改正,进行反思,在错误中成长。

    相关文章

      网友评论

          本文标题:惊心动魄,差点从“删库到跑路”20200331

          本文链接:https://www.haomeiwen.com/subject/nmmguhtx.html