MySQL通过binlog恢复误删数据原创
金蝶云社区-张悦_4969
张悦_4969
3人赞赏了该文章 530次浏览 未经作者许可,禁止转载编辑于2021年11月24日 10:22:37

binlog记录数据库所有的DDL和DML语句,当误删除数据时可以通过binlog找回,不过当binlog超过过期时间则无法再找回过期时间前的日志。

1.binlog存放位置:show variables like "%log_bin_basename%";

2.binlog过期时间:show variables like "%expire_logs_days%"; 


示例:

2021-07-10 03:34:53时误删了数据,找到此时间段的binlog日志,将其放到tmp目录下/tmp/mysql_bin_39998.000682,将此时间区间(时间范围可以自定义,2021-07-10 03:34:47到021-07-10 03:35:00)执行过的sql语句生成到/tmp/binlog1.sql里,然后在生成的binlog1.sql文件里找到当时的删除记录,再手工转换为insert语句补回数据。

(注: 时间区间越精确、越小越好,生成的sql文件会很有几十M到几百M不等)


/usr/local/mysql/bin/mysqlbinlog --no-defaults  --base64-output=decode-rows   -d 库名 /tmp/mysql_bin_39998.000682  -v --start-datetime='2021-07-10 03:34:47' --stop-datetime='2021-07-10 03:35:00'> /tmp/binlog1.sql


赞 3