[mysql]记录一次误删整表数据并且恢复的操作
前言
事情发生在昨天,因为大周末的,学点python,用python做的一个静态html代码生成工具,原理很简单,采集数据后,落库,之后遍历数据,生成html.
边看剧边撸代码真的是万恶之源,一不小心,删除了9万行数据.下图.
这张表作为附加表,生成html是必须要用的.出事情后,果断开始恢复记录过程.
解决思路
- 确定mysql开启了binlog.
- 确定记录操作时间
- 编写脚本导出记录.
- 编写导入脚本
解决过程
1.确定mysql开启了binlog
mysql> show variables like'log_bin%';
+---------------------------------+-----------------------------+
| Variable_name | Value | +---------------------------------+-----------------------------+ | log_bin | ON |
| log_bin_basename | /var/lib/mysql/binlog | | log_bin_index | /var/lib/mysql/binlog.index |
| log_bin_trust_function_creators | OFF | | log_bin_use_v1_row_events | OFF |
+---------------------------------+-----------------------------+
5 rows in set (0.01 sec)
mysql>
确定记录操作时间
因为我sql执行上面有时间,所以可以明确时间
编写脚本导出记录
mysqlbinlog --base64-output=DECODE-ROWS -v -d dbname --start-datetime '2022-05-30 14:48:00' /var/lib/mysql/binlog.0000* > www.sql
脚本很简单,--base64-output=DECODE-ROWS
代表,log里面base64码转成了可阅读的方式..写入到www.sql
文件中.
编写导入脚本
因为www.sql
里面包含了很多乱七八糟的东西,而我delete
其实很好就找到了pos
如下图
将delete之前的代码都删了
然后找到最后一条delete的记录,将最后的其他数据都删除了
之后就是记录的调整了,这个最好用比较好的编辑器就可以调整了.
改成insert即可.比如我下面.
使用命令mysql -uroot -p -f dbname < www.sql
,输入密码即可
本文来自:[mysql]记录一次误删整表数据并且恢复的操作-小码农,转载请保留本条链接,感谢!
温馨提示:
本文最后更新于 2022年05月30日,已超过 864 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我。
正文到此结束
- 本文标签: mysql python sql
- 本文链接: https://djc8.cn/archives/mysql-record-an-operation-that-mistakenly-deletes-the-entire-table-data-and-restores-it.html
- 版权声明: 本文由小码农原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权