使用mysqlbinlog恢复误删数据

1.确保MYSQL里的BINLOG开启、binlog_format为ROW和binlog_row_image为FULL

2.对表tt里进行操作


2.1.更新表tt的数据:

2.2.删除tt表里其中一条数据

2.3插入一条数据进tt表

被修改的步骤


=============================================================我是一条线

3.通过mysqlbinlog工具查找对应的恢复信息

基于开始/结束时间 :

mysqlbinlog --start-datetime='2013-09-10 00:00:00' --stop-datetime='2013-09-10 01:01:01' -d 库名 二进制文件

基于pos值

mysqlbinlog --start-postion=107 --stop-position=1000 -d 库名 二进制文件

3.1导出相关部分

mysqlbinlog --no-defaults --start-datetime='2019-11-10 21:30:00' --stop-datetime='2019-11-10 22:00:00' -d test --base64-output=decode-rows -v -v /mysqldata/binlog/mysql-bin.000001 | grep -B 15 -A 15 'INSERT' >/mysqldata/rebin/ttinsert.txt

mysqlbinlog --no-defaults --start-datetime='2019-11-10 21:30:00' --stop-datetime='2019-11-10 22:00:00' -d test --base64-output=decode-rows -v -v /mysqldata/binlog/mysql-bin.000001 | grep -B 15 -A 15 'DELETE FROM' >/mysqldata/rebin/ttdelete.txt

mysqlbinlog --no-defaults --start-datetime='2019-11-10 21:30:00' --stop-datetime='2019-11-10 22:00:00' -d test --base64-output=decode-rows -v -v /mysqldata/binlog/mysql-bin.000001 | grep -B 15 -A 15 'UPDATE' >/mysqldata/rebin/ttupdate.txt


========================================================我也是一条线

删除对应# at xxxx之前和之后的无关数据

3.3 将ttinsert.txt中的记录转换为SQL语句

cat ttinsert.txt | sed -n '/###/p' | sed 's/### //g;s/\/\*.*/,/g;s/INSERT INTO/DELETE FROM/g;s/SET/WHERE/g;' | sed -r 's/(@2.*),/\1;/g;s/(@1.*),/\1 and/g'|sed 's/@1/id/g;s/@2/name/g;' > ttdelete.sql

3.4 将ttdelete.txt中的记录转换为SQL语句

cat ttdelete.txt | sed -n '/###/p' | sed 's/### //g;s/\/\*.*/,/g;s/DELETE FROM/INSERT INTO/g;s/WHERE/SELECT/g;' | sed -r 's/(@2.*),/\1;/g' | sed 's/@[1-9]=//g' > ttinsert.sql

3.5 将ttupdate.txt中的记录转换为SQL语句

sed '/WHERE/{:a;N;/SET/!ba;s/\([^\n]*\)\n\(.*\)\n\(.*\)/\3\n\2\n\1/}' ttupdate.txt | sed -r '/WHERE/{:a;N;/@2/!ba;s/### @2.*//g}' | sed 's/### //g;s/\/\*.*/,/g' | sed '/WHERE/{:a;N;/@1/!ba;s/,/;/g};s/#.*//g;s/COMMIT,//g' |sed -r 's/(@2.*),/\1/g'| sed '/^$/d'| sed 's/@1/id/g;s/@2/name/g;' > ttupdate.sql

===========================================================我还是一条线

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容