关于在阿里云DMS误操作后如何恢复数据的记录
前言
昨天因客户员工操作错误,导致快递单号和订单互换。客户员工那边让笔记修改数据。
于是笔者写下如下SQL来操作,导致了灾难性事故。
update `t_order_fed_ex_record` set `tracking_number` = '884102170661', `master_tracking_number` = '884102170661', `push_flag` = 'NONE', `pick_up_status` = 0 where '884106116578';
执行SQL后,7550条数据的tracking_number和master_tracking_number都被更新为884106116578。
笔者后面才留意到where后面漏了字段条件!!!此操作进行了全表更新!
一个重大的运维事故由此诞生!
恢复过程
由于客户比较抠,客户的阿里云DMS服务并没有开通SQL备份与回滚服务。所以笔者无法通过阿里云DMS控制台一键操作数据回滚。
阿里云DMS提供的备份回滚功能很便捷,只须点击获取备份,根据选项即可快速进行数据恢复。操作位置如下图:
但很可惜,笔者只能通过阿里云DMS提供的数据恢复工具进行恢复。
在使用这个工具的前提是,数据库有开通binlog而且只能追溯半小时内的操作数据。
操作步骤如下:
- 在阿里云DMS控制台,在对应的数据表进行鼠标右键。你会看到弹出的菜单有一个数据方案,鼠标移到【数据方案】会有一个【数据追踪】选项。
- 点击【数据追踪】,会弹出以下所图。
3. 根据刚才的操作动作进行选择选项。笔者操作的是update,而且是单表操作,数据勾选的追踪类型为【更新】,也选择对应的时间范围。
4.点击申请之后,阿里云DMS会生成一个数据追踪工单,随后只须耐心等待阿里云DMS完成日志处理。待日志处理完成后,您就可以以下界面进行日志搜索。
5. 根据操作的时间,进行范围搜索,随后点击【导出回滚脚本】。待SQL脚本下载完毕,就可以在DMS控制台进行执行SQL脚本回滚数据啦。
后语
- 数据库一定要开启binlog配置,以防不测。
- 生产环境数据操作需极度谨慎。虽为私人项目,仍需保持专业严谨态度。