Mysql通过binlog恢复误删数据

重要提醒

一定要对数据库备份!!!备份!!!!备份!!!!

  1. 有时候备份docker并不会备份里面的数据,所以做好docker备份的检查
  2. 系统备份<docker备份(如果有的话)< 数据库备份 < sql备份 根据重要程度最好依次做好备份

操作流程

  1. 执行sql语句,查看当前使用的日志文件
show master status

在这里插入图片描述

  1. 执行sql语句,查看日志列表详情
show binlog events in 'master-mysql-bin.000004'

在这里插入图片描述

  1. 将对应的binlog导出
mysqlbinlog --no-defaults -vv  /var/lib/mysql/master-mysql-bin.000004 > /tmp/all.sql
  1. 使用合适的编辑器查看导出的all.sql文件,并找出造成误删除的sql语句,找到其前面的pos,比如下方示例的819306
# at 819306
exec_time=0	error_code=0	Xid = ***
SET TIMESTAMP=****/*!*/;
SET @@session.pseudo_thread_id=*****/*!*/;
DROP TABLE `误删除的数据表` /* generated by server */

注意

  1. 特别重要:恢复前一定要对现有的所有数据库的数据进行备份,并保证就算在一台新服务器上备份的数据库也可以被顺利恢复。
  2. 注意其最早的记录,如果该记录时间较晚,可能造成恢复数据的过程中报错,或者数据不完整。
  3. 注意查看是否有创建对应表的sql,如果没有创建表的sql,后续需要手动创建对应的表。
  4. 逐个检查drop
  1. 导出其之前的sql进行恢复
mysqlbinlog --no-defaults -v --database="要恢复的数据库"  --start-position="4" --stop-position="819306"  /var/lib/mysql/master-mysql-bin.000004 > /放临时文件的目录/有意义的文件名.sql
  1. 导入文件
mysql -uroot -p密码 < /放临时文件的目录/有意义的文件名.sql

或者进入mysql

mysql -uroot -p密码
source /放临时文件的目录/有意义的文件名.sql

完结

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值