binlog恢复删库数据

通过下面的命令查询日志的状态

show variables like '%log_bin%';

on 打开,off关闭,当前是打开的

如果没有打开,在my.cnf文件设置开启他

log_bin_basename 就是存储binlog日志文件的目录文件

这个.000结尾的都是存储的增删改sql,不纪录查询sql

执行下面的命令可以查看所有binlog日志的文件信息

show master logs;

这个命令可以查询最新的binlog日志文件,和最后一个位置Position

show master status;

使用cat命令的时候,会显示乱码

我们使用下面的命令来查看日志

SHOW binlog EVENTS in 'mall-mysql-bin.000011';

我们先看下当前的数据

我们删除一部分数据,在看下

我们来重新生成一个日志文件,用于备份之后的操作数据增删改sql,在查看一下

flush logs;

可以看到12就创建了

我们从End_log_pos的1200位置来恢复数据

db1 你的数据库的名字

mall-mysql-bin.000011 之前的日志文件

/usr/bin/mysqlbinlog  --stop-position=1200 --database=db1  /var/lib/mysql/mall-mysql-bin.000011 | /usr/bin/mysql -uroot -p123456 -v db1 

在linux中执行上面的命令

可以看到数据已经恢复了

删除数据库请慎重操作

我们也可以对数据库db1删除,删除之后,重新创建一个db1数据库的名字

--start-position 开始的位置 不写就是从最早的开始

--stop-position 结束的位置

在执行操作之前,看一下日志的文件内容,是否有建表语句,确定好之后,在操作

/usr/bin/mysqlbinlog --start-position=398  --stop-position=1294 --database=db1  /var/lib/mysql/mall-mysql-bin.000015 | /usr/bin/mysql -uroot -p123456 -v db1 

执行之后,我们的数据也恢复了

我们删除binlog日志文件的时候,不能通过rm -rf 去删除,这样删除会报错。

要通过命令的方式来删除

我们先查看下当前的日志文件

show binary logs;

我们来看下部分删除,删除000014之前的数据,000014不会被删除

purge master logs to 'mall-mysql-bin.000014';

可以看到数据已经被删除了

要想删除全部日志文件可以使用下面的命令,但是慎用,一旦删除,就无法在恢复数据了

慎用,慎用,慎用 重要的事情说三遍

reset master;

可以看到数据已经被删除了,又从001开始了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值