mysql通过mysqldump+binlog进行数据恢复

show variables like 'log_%'; #查看binlog是否打开


首先binlog一定是要先打开的 第一行我们可以看到是ON代表binlog已经打开了,如果你的是OFF那证明并没有打开binlog,在my.ini文件中添加以下配置然后重启mysql就可以看到binlog打开了
在这里插入图片描述

log-bin=mysql-bin 
server-id=1 

在这里插入图片描述
use demo 然后查看数据库 我现在有一个students表
在这里插入图片描述
查看是有两个记录,现在我们先来mysqldump备份一下现在的数据,然后就生成了demo.sql
在这里插入图片描述

mysqldump -h127.0.0.1 -P3306 -uroot -p demo>d:\demo.sql
# 注意:不能在mysql中执行命令 在命令行执行才对 -h代表host -P表示端口 -u表示用户名 -p表示密码,
# 我这个方法是直接备份整个数据库,还有备份单个表,多个表的操作,感兴趣的兄弟可以自己百度了解了解

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
修改一条数据和插入一条数据,这下数据变成这个样子
在这里插入图片描述

删除表然后查询,数据表确实没有了
在这里插入图片描述
在这里插入图片描述
现在我们先根据mysqldump备份的数据还原一下
在这里插入图片描述
然后查询students表,发现只有两条数据,而且还没有进行修改和添加
在这里插入图片描述
修改和添加操作都会记录在binlog中所以我们根据binlog进行恢复
在这里插入图片描述

show master status; # 查看目前在使用的binlog
show binlog events in 'mysql-bin.000001'; # 查看mysql-binlog.000001
# 我们发现787-908是删除了demo表 所以之前的操作就是我们的修改和插入也就是4-787行
# 我们在mysql的binlog存储路径下的命令行将这几行导出sql文件
mysqlbinlog --start-position=4 --stop-position=787 mysql-bin.000001  -r d:\operation.sql

在这里插入图片描述
在这里插入图片描述
然后source导入binlog生成的operation.sql文件并查询,发现可以了然后可以用flush logs;使用新的binlog来记录方便下一次恢复
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值