误删mysql数据后,如何通过mysql二进制日志恢复数据

Posted 哈尔滨洛弘科技有限公司

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了误删mysql数据后,如何通过mysql二进制日志恢复数据相关的知识,希望对你有一定的参考价值。

问题出现!!!!!
由于程序内bug,导致关联子表数据被无辜删除了,数据库又没有备份,只能通过找到mysql日志来恢复了

mysql日志一般存放在server/data/目录下的 文件名为mysql-bin.*的文件内,如果你的没有那证明你的日志没有开启,那就没办法恢复了,如果不做mysql设置一般都是默认开启的

宝塔的日志文件存在于 /www/server/data/目录下

执行找回ssh命令

写 start-datetime 时间段区间找回,只写stop-datetime为在这个时间点前的数据
时间格式为 【YYYY-MM-DD HH:ii::ss】比如(2022-08-11 00:00:00)

/www/server/mysql/bin/mysqlbinlog --start-datetime="START" --stop-datetime="END" /www/server/data/mysql-bin.00* > /www/server/data/back.sql
/www/server/mysql/bin/mysqlbinlog  --stop-datetime="END" /www/server/data/mysql-bin.00* > /www/server/data/back.sql

找回后的sql文件一般无法直接导入,而且可能会参杂其他表的增删改查,会影响数据的完整性,所以我们要只提取我们需要的sql命令即可

  1. 提取Insert命令
sed -n '/^INSERT /,/;/p' /www/server/data/back.sql > new_back.sql
  1. 提取update命令
sed -n '/^UPDAETE /,/;/p' /www/server/data/back.sql > new_back.sql
  1. 提取delete命令
sed -n '/^DELETE /,/;/p' /www/server/data/back.sql > new_back.sql

当然也可以提取指定表,书写对应的正则即可

以上是关于误删mysql数据后,如何通过mysql二进制日志恢复数据的主要内容,如果未能解决你的问题,请参考以下文章

误删mysql数据后,如何通过mysql二进制日志恢复数据

误删mysql数据后,如何通过mysql二进制日志恢复数据

如何通过Mysql的二进制日志恢复数据库数据

详解:如何恢复MySQL数据库下误删的数据

MySQL删除表怎么恢复?

mysql误删数据后 快速恢复的办法