欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

记一次Windows下binlog恢复过程

程序员文章站 2022-07-13 08:04:12
...

第一次写就随意一点

SQL语句不严谨导致某个关键字段数据全部置0,还把备份实例覆盖过去了

心里万马奔腾。。。。。。

看到开了binlog日志,想着还有救,一看发现在上周清理过日志,但是没有做任何全量备份,再次跌到谷底。。。。

在网上逛了一圈,居然全是抄袭,几十篇文章一模一样,还都就一知半解的,这年头啊还得靠自己。

重点

binlog日志只是后备,只是后备,只是后备,希望你永远用不上。
一定要做全量备份,一定要做全量备份,一定要做全量备份,只有全量备份和日志结合才能最好的发挥它的作用,特别特别特别是清日志的时候,必须是备份后才清理,不然后悔莫及。

上面是牢骚,正文开始

怎么开启日志不再赘述,请移步网上各种文章

首先确定文件位置

下面是用的的文件
**日志文件:**你的文件夹\MySql\Data
**mysqlbinlog:**你的文件夹\MySql\bin

开始

发现问题第一时间查看日志状态

show variables like 'log_bin'

如果开启了日志,如下图
如果没有开启,又没有备份,只能祝福你了
记一次Windows下binlog恢复过程
查看已有日志

show master logs;

记一次Windows下binlog恢复过程

数据库内查看日志内容

show binlog EVENTS in 'binlog.000001'

记一次Windows下binlog恢复过程

使用mysql自带工具查看日志翻译成可读语句
运行cmd,找到mysqlbinlog位置

C:\MySql\bin>mysqlbinlog --no-defaults --base64-output=decode-rows -v C:\MySql\Data\binlog.000001 > 000001.sql

推荐使用工具翻译,更直观

记一次Windows下binlog恢复过程
知道具体时间更好,直接搜索时间找到最后一个flags: STMT_END_F的pos

binlog恢复原理就是把数据库回到上一次备份,然后运行到恢复点的全部语句进行恢复。

找到了恢复点之后把备份时间到恢复点间的所有日志解析出来

C:\MySql\bin>mysqlbinlog --no-defaults --base64-output=decode-rows -v --start-position=719077744 --stop-position=740188049 C:\MySql\Data\binlog.000001 > back.sql

然后利用备份恢复,运行sql。
完成

最后,希望大家用不上