MySQL使用Binary Log日志恢复误删除数据
本文最后更新于 2024-07-06,文章内容可能已经过时。
因为自己手误导致图床的数据库中所有表数据全部清空,通过百度通过简单的命令成功恢复数据库数据。
恢复数据是全量恢复,就是所有的库所有的表都会进行恢复,因为我的数据不是很多,完全够用了。有需要的可以重新查找资料
因为学习数据库的时候都会学到MySQL的三大日志:binlog、redolog和undolog。其中binlog日志是记录数据库写入操作的二进制信息,所以这里很明显可以直接通过binlog日志进行恢复。
首先要查看数据库是否已经开启了binlog日志,这里默认都是打开的。
show variables like '%log_bin%';
前往MySQL的数据目录,默认目录为:/var/lib/mysql
cd /var/lib/mysql
ls -l
从最新的binlog日志开始查询,也可以等价于后面数字最大的文件。
mysqlbinlog --no-defaults --base64-output=decode-rows -v binlog.000003 > /root/003.sql
查找一下生成的文件,寻找需要恢复的时间节点。
通过查找,我们是需要将数据恢复到2022-08-27 02:42:53
时间之前,在binlog.000003
文件中找到。所以需要将binlog.000001、binlog.000002、binlog.000003中2022-08-27 02:42:53之前的数据。
mysqlbinlog --no-defaults --skip-gtids=true --stop-datetime="2022-08-27 02:42:52" binlog.000001 | mysql -f -u 数据库用户 -p数据库密码
mysqlbinlog --no-defaults --skip-gtids=true --stop-datetime="2022-08-27 02:42:52" binlog.000002 | mysql -f -u 数据库用户 -p数据库密码
mysqlbinlog --no-defaults --skip-gtids=true --stop-datetime="2022-08-27 02:42:52" binlog.000003 | mysql -f -u 数据库用户 -p数据库密码
执行完成后重新查看数据库,发现数据已经恢复完成。
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 舟涯
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果