记一次Windows下binlog恢复过程
程序员文章站
2022-07-13 08:04:12
...
这里写自定义目录标题
第一次写就随意一点
SQL语句不严谨导致某个关键字段数据全部置0,还把备份实例覆盖过去了
心里万马奔腾。。。。。。
看到开了binlog日志,想着还有救,一看发现在上周清理过日志,但是没有做任何全量备份,再次跌到谷底。。。。
在网上逛了一圈,居然全是抄袭,几十篇文章一模一样,还都就一知半解的,这年头啊还得靠自己。
重点
binlog日志只是后备,只是后备,只是后备,希望你永远用不上。
一定要做全量备份,一定要做全量备份,一定要做全量备份,只有全量备份和日志结合才能最好的发挥它的作用,特别特别特别是清日志的时候,必须是备份后才清理,不然后悔莫及。
上面是牢骚,正文开始
怎么开启日志不再赘述,请移步网上各种文章
首先确定文件位置
下面是用的的文件
**日志文件:**你的文件夹\MySql\Data
**mysqlbinlog:**你的文件夹\MySql\bin
开始
发现问题第一时间查看日志状态
show variables like 'log_bin'
如果开启了日志,如下图
如果没有开启,又没有备份,只能祝福你了
查看已有日志
show master logs;
数据库内查看日志内容
show binlog EVENTS in 'binlog.000001'
使用mysql自带工具查看日志翻译成可读语句
运行cmd,找到mysqlbinlog位置
C:\MySql\bin>mysqlbinlog --no-defaults --base64-output=decode-rows -v C:\MySql\Data\binlog.000001 > 000001.sql
推荐使用工具翻译,更直观
知道具体时间更好,直接搜索时间找到最后一个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。
完成
最后,希望大家用不上
上一篇: 记一次数据恢复过程
下一篇: 记一次mysql数据库恢复过程