mysql的binlog日志恢复

一、准备工作

1.查看是否开启binlog,show variables like ‘%log_bin%’;,log_bin对应的value为ON时,表示开启状态
log_bin对应的value为ON时,表示开启
2.开启binlog状态,找到mysql的配置文件,我的是linux版本的,在/etc/my.cnf里,增加以下配置,
# binlog配置
server-id=1
log-bin=/var/lib/mysql/mysql-bin
重启mysql服务,有可能会报错,提示目录不存在,可以查看日志tail -f -n 200 /var/log/mysqld.log,
我遇到的是目录找不到,可以自己新建。重启之后再次查看binlog开启状态。

二、常用命令

1.mysql> show master logs;查看日志文件列表
2.mysql> Flush logs;刷新日志,会新建一个日志文件,方便查看最新记录
3.mysql> show binlog events in ‘mysql-bin.000002’;查看日志文件里的内容
在这里插入图片描述
查看binlog日志也可以在linux文件中直接查看,使用命令:mysqlbinlog mysql-bin.000004

三、案例

1.新建数据库,表,在里面插入若干数据,进行备份数据库,模拟生产场景的自动备份数据库。
2.先进行一系列数据插入,修改,删除…,后面由于某个操作,将其中的一个字段批量更新错误了。假如上面图中的三个update_rows就是错误操作,那么我们就要恢复到update_rows之前,也就是操作insert的时候,对应的commit对应的456的end_log_pos。
3.对数据库进行还原,恢复到备份时的数据,再使用命令/usr/bin/mysqlbinlog --stop-position=456 --database=myDatabase /var/lib/mysql/mysql-bin.000004 | /usr/bin/mysql -uroot -p123456Lls! -v myDatabase,将数据更新到insert操作后。注意-stop-position参数,表示更新到哪个节点,也可以指定起始节点–start-position。
例如要恢复最后一次的update_rows数据,/usr/bin/mysqlbinlog --start-position=1120 --stop-position=1452 --database=myDatabase /var/lib/mysql/mysql-bin.000004 | /usr/bin/mysql -uroot -p123456Lls! -v myDatabase,操作结果如下图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值