硬盘价格无价数据,数据库执行仔细操作༁
binlog日志还原不适用于直接删表删库的误操作!
实战恢复。
1、binlog数据导出相关时间。
2、找到相应的句子和pos间隔。
3、sql导出改变区间。
4、将binlog导出的sql转换为反向修复sql。
5、执行sql恢复。
在 2024年9月12日 在操作过程中,SQL拼写错误,导致全表数据被误刷。这个问题导致数据丢失对业务运营有严重影响。见下面修复的数据文档。从而进一步写出错误的删除数据,binlog恢复方案。
MySQL生产环境 where条件写错了全表数据,#xff0c;binlog恢复。https://blog.csdn.net/id_is_null/article/details/142253710。
1、确定误操作时间。
2024年9月14日 10点55-11点05。
2、确定目标库表和执行语句。
。 库:newsee-budget 表:ns_budget_loan_bak。
执行语句:delete from ns_budget_loan_bak;
3、binlog数据导出相关时间。
4、找到相应的句子和pos间隔。
5、sql导出改变区间。
6、将binlog导出的sql转换为反向插入sql。
7、执行sql恢复。
首先去binlog目录找,确定哪个binlog文件误操作时间。
。
从这里可以看出是在 binlog.000925 文件里。
binlog日志将在相应的时间导出:
mysqlbinlog --no-defaults --start-datetime='2024-09-14 10:55:0' --stop-datetime='2024-09-14 11:05:0' --base64-output=decode-rows -d newsee-budget -vv binlog.000934 > /root/test.sql。
2、找出相应的句子和pos间隔。
如果找不到,可以看看顶部链接实战修复误修改的文章。 。
结尾pos 107646361。
。
开始pos 107070608。
3、导出错误删除区间的sql。
这时,我们从binlog中导出这个区间的sql。
mysqlbinlog --no-defaults --start-position=107070608 --stop-position=107646361 --base64-output=decode-rows -vv binlog.000934 > /root/test1.sql。
可以看出,导出的sql只是刚才连续的sql。
可以看出,导出的sql只是刚才连续的sql。
。4、将binlog导出的sql转换为反向修复sql。
。
能自己理解意思以及参考文章顶部的另一篇文章。
shell sql字段有换行。
sed -n '/###/'##//##//;p test1.sql > test2.sqlsed 's/### //g' test2.sql > test3.sqlsed 's#/.*##g' test3.sql > test4.sqlsed 's/^DELETE FROM/INSERT INTO/' test4.sql > test5.sqlsed ':a;N;$!ba;s/\nWHERE/ VALUES \(/g' test5.sql > test6.sqlsed 's/@[0-9]*=//g' test6.sql > test7.sqlsed 's/$/,/g' test7.sql > test8.sqlsed 's/VALUES (,/VALUES (/g' test8.sql > test9.sqlsed ':a;N;$!ba;s/,\nINSERT/\);\nINSERT/g' test9.sql > test10.sqlsed '$ s/.$/);/' test10.sql > test11.sql。ba;s/,\nINSERT/\);\nINSERT/g' test9.sql > test10.sqlsed '$ s/.$/);/' test10.sql > test11.sql。
shell sql一行一行。
sed -n '####/#399#;p test1.sql > test2.sqlsed 's/### //g' test2.sql > test3.sqlsed 's#/.*##g' test3.sql > test4.sqlsed 's/^DELETE FROM/INSERT INTO/' test4.sql > test5.sqlsed ':a;N;$!ba;s/\nWHERE\n / VALUES \(/g' test5.sql > test6.sqlsed 's/@[0-9]*=//g' test6.sql > test7.sqlsed 's/$/,/g' test7.sql > test8.sqlsed 's/VALUES (,/VALUES (/g' test8.sql > test9.sqlsed ':a;N;$!ba;s/,\nINSERT/\);\nINSERT/g' test9.sql > test10.sqlsed '$ s/.$/);/' test10.sql > test11.sqlsed ':a;N;$!ba;s/,\n/,/g' test11.sql > test12.sql。ba;s/,\n/,/g' test11.sql > test12.sql。
通过 python3 的 re。
最后得到 test11.sql 返回数据insert即可。
最后得到 test11.sql 重新返回数据insert
5、执行sql恢复。
将上述修复sql重新执行到数据库可完全恢复到修改前的状态。
原创内容 禁止未经许可转载。原创内容 禁止未经许可转载。原创内容 禁止未经许可转载。