使用binlog日志恢复误删数据

1、查看binlog是否开启并锁表

# 进入mysql
mysql -uroot -proot#查看binlog是否开启
show variables like '%log_bin%';
#如果log_bin显示为ON则开启成功#锁表,防止数据被污染
lock tables 表名 read;

2、查询最新的binlog 获取binlog日志名称 下一步需要用到

show master status;

3、使用mysqlbinlog 工具导出格式化后的日志

mysqlbinlog -uroot -proot --base64-output=decode-rows mysql-bin.000001 > /var/lib/mysql/backup.sql;#--base64-output=decode-rows 表示导出格式为row
#--start-datetime="2022-01-13 08:00:00" 表示查询的开始时间
#--stop-datetime="2022-01-14 10:00:00" 查询的结束时间
# > /var/lib/mysql/backup.sql 表示输出路径# 如提示 mysqlbinlog 命令不存在则使用find命令寻找具体位置在进入目录后再执行
find / -name 'mysqlbinlog'
/usr/bin/mysqlbinlog
cd /usr/bin/mysqlbinlog

4、使用vim查看刚刚导出的backup.sql文件,绿色箭头指的是我添加的数据,红色箭头是我执行的删除命令,如果我们要恢复删除前的数据,就找到删除命令的前一条命令执行后commit的提交点,也就是图中粉色箭头指向的位置,最后一个提交点的数字等会就是我们的回滚点

5、确定好回滚点位置,再次导出binlog,这次不要加 –base64-output=decode-rows 参数,否则mysql无法识别这种格式导致无法恢复数据,此参数只是为了更方便的可视化mysqlbinlog的导出文件来寻找回滚点位置。

mysqlbinlog -uroot -proot --start-position="回滚点数字" mysql-bin.000001 > /var/lib/mysql/backup.sql;

6、准备恢复数据,开始恢复前,如果你的的恢复文件中有创建数据库的操作,请先将原有的数据库先删除,否则会报database exist;

# 解锁之前锁住要恢复的表
mysql > unlock tables;
# 执行命令恢复数据
mysql -uroot -proot 数据库名称 < /var/lib/mysql/backup.sql  # 指定上一步导出的sql文件位置

7、执行后数据就完成恢复了,这只是最初级的恢复方式,因为binlog日志只有一个文件(关于binlog文件的生成每重启一次,便会重新生成一个binlog文件;还有一种情况就是运行了FLUSH LOGS命令也会重建一个;还有一种情况就是当这个binlog文件的大小到了设定的值后,就会重新生成一个新的),如果删除的数据涉及到以往的binlog文件,还需要去定位误删记录插入的位置,并合并这些binlog数据才能完整恢复,并且此次的binlog中只有单张表的操作,实际项目中会有多张表各种不同的操作,如果只需要单独恢复某张表的话,需要使用过滤命令(#sed -n ‘/### DELETE FROM test.test/, /COMMIT/p’ 表示过滤规则),先过滤,再导入到文件中来得到想要的数据。

使用MySQL的binlog日志恢复误删数据相关推荐

  1. binlog日志_【删库跑路】使用Binlog日志恢复误删的MySQL数据

    前言 "删库跑路"是程序员经常谈起的话题,今天,我就要教大家如何删!库!跑!路! 开个玩笑,今天文章的主题是如何使用Mysql内置的Binlog日志对误删的数据进行恢复,读完本文, ...

  2. 【删库跑路】使用Binlog日志恢复误删的MySQL数据

    前言 "删库跑路"是程序员经常谈起的话题,今天,我就要教大家如何删!库!跑!路! 开个玩笑,今天文章的主题是如何使用Mysql内置的Binlog日志对误删的数据进行恢复,读完本文, ...

  3. Mysql基于binlog日志恢复数据

    Mysql基于binlog日志恢复数据 1.Linux安装mysql https://blog.csdn.net/qq_44981526/article/details/126717005 可能遇到的 ...

  4. Mysql 通过 binlog日志 恢复数据(数据搞丢看过来)

    1.查看binlog是否开启 #查看binlog是否开启 show variables like '%log_bin%'; 2.锁表,防止数据被污染(可根据需求,不阻塞业务的情况) #锁表,防止数据被 ...

  5. mysql 二进制日志在哪_如何通过Mysql的二进制日志恢复数据库数据

    经常有网站管理员因为各种原因和操作,导致网站数据误删,而且又没有做网站备份,结果不知所措,甚至给网站运营和盈利带来负面影响.所以本文我们将和大家一起分享学习下如何通过Mysql的二机制日志(binlo ...

  6. MYSQL使用binlog日志恢复数据

    本教程目的在于,你的MYSQL采用了binlog日志,且产生了binlog日志文件,使用日志文件恢复数据. 步骤一.找到要恢复数据的binlog文件 怎么找?使用命令:show variables l ...

  7. MySQL 之binlog日志说明及利用binlog日志恢复数据操作记录

    众所周知,binlog日志对于mysql数据库来说是十分重要的.在数据丢失的紧急情况下,我们往往会想到用binlog日志功能进行数据恢复(定时全备份+binlog日志恢复增量数据部分),化险为夷! 一 ...

  8. MySQL二进制binlog日志说明以及利用binlog日志恢复数据

    MySQL的binlog日志对于mysql数据库来说是十分重要的.在数据丢失的紧急情况下,我们往往会想到用binlog日志功能进行数据恢复(定时全量备份+binlog日志恢复增量数据部分). 一.关于 ...

  9. MYSQL专题-使用Binlog日志恢复MySQL数据

    大家有没有碰到过由于误操作把测试数据库的一张表给删除了,导致测试的数据都被删除了,然后手足无措,测试把你一定数落,顿时感觉自己要死了?今天就教你即使误删了也可以将删除的数据恢复,以后误删再也不用惊吓了 ...

最新文章

  1. Android开发之自定义Toast(带详细注释)
  2. python读取文件名-Python获取指定文件夹下的文件名的方法
  3. 一次利用位图索引进行SQL优化的案例
  4. LeetCode 371 两个整数之和
  5. 数据的增删改_准备数据
  6. 多线程实战(一) : 交通灯管理系统
  7. sourcemointor评价代码
  8. [Luogu 1197] JSOI2008 星球大战
  9. 合肥科学岛安光所计算机应用,国家大气污染防治攻关联合中心成立 合肥科学岛安光所承担重任...
  10. 中国大学生计算机设计大赛 历史作品博物馆
  11. Garbled Circuits介绍 - 56 Yao协议的实现 总结
  12. 影响网站跳出率的因素
  13. Dapr专题之06Actors
  14. 3dmax渲染软件有哪些?哪个好用
  15. linux gpio口测试程序,gpio接口测试
  16. 如何解决移动端300ms延迟
  17. 产品公司解决方案、解决方案公司解决方案,可能你做了一辈子IT你也不知道...
  18. 计算机系统用户登录密码错误,电脑开机密码正确却进不去,老提示密码错误
  19. Spring Boot 启动 出现异常The bean xxx could not be injected as a xx.xxxx because it is a JDK dynami
  20. 微信小程序开发 - 视图与逻辑

热门文章

  1. C#环形缓冲区(队列)完全实现(转)
  2. CNN经典分类网络发展历程GoogLeNet、SqueezeNet、ResNet、ResNeXt、DenseNet
  3. 影响GPS定位精度的基本概念
  4. this指向 改变this指向
  5. 微信小程序----微信小程序浏览pdf文件
  6. 「订单」业务的设计与实现
  7. MinGW-w64 C/C++编译器各版本说明
  8. python sort多条件排序
  9. 【Python习题】简易英汉字典(project-ssss)(题目的坑解析+实现代码)
  10. 自己制作Chrome绿色版本。