MYSQL使用binlog日志恢复数据

本教程目的在于,你的MYSQL采用了binlog日志,且产生了binlog日志文件,使用日志文件恢复数据。

步骤一、找到要恢复数据的binlog文件

怎么找?使用命令:show variables like '%log_bin%';

如下图:这个路径就是你的binlog日志的文件夹

如下图:可能存在好多个 binlog日志文件,例如:binlog.000013

 有些教程里,文件名也可能是这样的:mysql-bin.000001

 

步骤二:把日志文件导出为.sql文件

这里提醒:最好不要执行命令查看内容:show binlog EVENTS in 'binlog.000019';

因为文件太大的话,可能有上亿条数据...

导出命令有两种,一种根据 事务区间导出,一种根据日期区间导出

事务区间:--start-position=573 --stop-position=718

日期区间:--start-datetime="2022-08-10 9:16:59" --stop-datetime="2022-08-13 5:06:48"

事务区间导出命令:

mysqlbinlog --no-defaults --start-position=1525059 --stop-position=1525612 C:\mysql\Data\binlog.000013 -d 数据库名 > d:\test_pot.sql

日期区间导出命令:

mysqlbinlog --no-defaults --start-datetime="2022-08-10 9:16:59" --stop-datetime="2022-08-13 5:06:48" C:\mysql\Data\binlog.000013 -d 数据库名> d:\test.sql
 

怎么执行命令呢?不要进入mysql中执行,这个是依赖mysql\bin\mysqlbinlog.exe来运行的。

如下图:

导出后文件格式具体如下:

步骤三、执行导出的恢复文件test.sql

怎么执行命令呢?这个要命令行登录mysql执行。

登录mysql命令:mysql -h localhost -u root -p,输入密码

进入mysql后,切换数据库

最后执行恢复命令:source C:\Users\E590\Desktop\test.sql (第二步导出的.sql文件)

等待执行完成。然后就会发现,你的数据回来了。

注意事项:

  • 1、第二步在导出恢复数据test.sql文件时、一定不能在命令中加 --base64-output=decode-rows

 加上后,导出的sql文件执行了也不能恢复。这种导出的更方便我们用来分析,恢复那段时间区间或者事务区间的内容。

下面两种图同一个时间段、同一个事务点的展示如下

加  --base64-output=decode-rows 导出的文件示例:

不加  --base64-output=decode-rows 导出的文件,执行后可恢复数据,示例:

上面两图,

第一张加上--base64-output=decode-rows导出的,我们可以用来分析,决定恢复哪些时间段内的,或者哪些 事务区间段内的。这样就能找到 第二步的 开始时间 结束时间 或者事务区间 的开始事务节点,结束事务节点。

在分析好 区间以后,再次不加--base64-output=decode-rows导出的,用来执行恢复。

  • 2、执行导出命令后,可能有如下提示,可以忽略不用管。

WARNING: The range of printed events ends with a row event or a table map event that does not have the STMT_END_F flag set. This might be because the last statement was not fully written to the log, or because you are using a --stop-position or --stop-datetime that refers to an event in the middle of a statement. The event(s) from the partial statement have not been written to output.

  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值