mysql binlog恢复误删的数据

news2024/11/20 15:38:44

mysql通过binlog日志恢复数据

  1. 前提条件
    开启备份
  2. 备份及恢复原理
    了解mysql主从复制,就知道slave会开启一个线程,去获取master的binlog二进制文件,用于同步数据,mysql通过binlog恢复数据也便是如此的,只不过是我们人为通过mysqlbinlog工具执行binlog文件罢了
  3. 恢复步骤
    事件描述
    线上系统不断更新一张表A
    然后公司来的实习生线上排查问题,误操作删除了A表中的一行或多行数据
    线上系统不断更新一张表A
    binlog日志会记录操作步骤,如图所示:
    在这里插入图片描述
    此时我们的期望是:还原删除的数据,而且不丢失后续的更新操作
    思路先恢复到(delete_rows)删除之前的数据,然后再跳过删除 操作,最后恢复删除操作后的数据
    注意:使用binlog文件恢复mysql数据,即使重复执行以下之前执行过的步骤(比如删除一条记录,然后直接使用mysqlbinlog恢复Delete_rows,就会报错了can find record,因为数据已经删除了,重新执行Delete_rows肯定会报错的)
    步骤
    先记录一些指令:
#查看log_bin是否开启,以及查看log_bin存储的位置
show variables like '%log_bin%';
#查看binlog文件列表
show master logs;
#查看指定binlog文件记录事件
show binlog events in 'binlog.0000001';
#使用mysqlbinlog执行binlog进行恢复
mysqlbinlog --start-position=3905 --stop-position=4045 --database=zxz /var/lib/mysql/binlog.000011 | /usr/bin/mysql -uroot -p12345678 -v zxz
mock
创建一个表t
插入一些数据
更新id=7的数据
删除id=6的数据(误删的数据)
更新id=8的数据
  • 使用show master logs查看当前操作记录的文件
    在这里插入图片描述
  • 使用show binlog events in 'binlog.0000001’查看详细记录(我的操作记录再binlog.000011)
    show binlog events in ‘binlog.000011’;
    在这里插入图片描述
  • 使用mysqlbinlog进行数据恢复
    现在就拿binlog.000011文件进行数据恢复,上图可以看到,第2410-2535行是创建了表,如果表t存在的话,我们从第2410开始恢复数据,就会报database exist错误,所以我们可以先把表删了,然后再从2410恢复至3540(创建表,插入数据,更新数据)
mysqlbinlog --start-position=2410 --stop-position=3540 --database=zxz /var/lib/mysql/binlog.000011 | /usr/bin/mysql -uroot -p12345678 -v zxz

此时,数据恢复了一部分,id为7的被更新,id=6的数据还在,id=8的数据未被改
然后跳过删除,执行更新id为8的数据

mysqlbinlog --start-position=3905 --stop-position=4045 --database=zxz /var/lib/mysql/binlog.000011 | /usr/bin/mysql -uroot -p12345678 -v zxz

如下图:
在这里插入图片描述
这个时候数据就已经恢复了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/159272.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mysql快速生成100W条测试数据(3)电商单店用户购买力数据

这是之前的文章里面包含一些以前的一些操作流程可以进行参考学习 更加详细操作步骤在第一篇文章里面 mysql快速生成100W条测试数据(3)电商单店用户购买力数据1.新增一个电商单店铺销售表2.创建表之后我们依然使用100万条数据作为我们要生成的行数3.id号根…

【数据结构初阶】6. 树和堆

1. 树概念及结构 1.1 树的概念 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。 有一个特殊的结点&#…

什么是元学习

什么是元学习 元学习介绍 元学习希望能够使得模型获取调整超参数能力,使其可以在获取已有的知识基础上,快速学习新任务。 元学习目的 元学习和机器学习的区别在于:机器学习是先人为调参,之后直接训练特定任务下的深度学习模型…

U盘打不开,提示格式化怎么办?不小心确定U盘格式化如何找回数据?

U盘是很常用的数据存储设备,存储空间大,携带方便。 很多用户在使用U盘的过程中,经常会遇到U盘格式化弹窗提示的问题。如果每次插入U盘都出现这个提示就会很影响使用,最糟糕的结果是不小心点了格式化,那么之前储存的文…

osg+shader光照半透明

先记录下,免得时间久了忘了。 对于光照,光源有点光源,聚光灯,方向光。每种光源又有ambient,diffuse,specular,emission几个属性。 这里用点光源(不考虑衰减) 1,diffuse是入射光与物体法线之间…

R语言raster包计算多个栅格图像平均值、标准差的方法

本文介绍基于R语言中的raster包,批量读取多张栅格图像,对多个栅格图像计算平均值、标准差,并将所得新的栅格结果图像保存的方法。 在文章R语言raster包批量读取单一或大量栅格图像(https://blog.csdn.net/zhebushibiaoshifu/artic…

Spring 获取resource下文件路径

两种方式String path "excel/constant.xlsx" ;// 直接获取文件1 File file1 new DefaultResourceLoader().getResource(path).getFile(); // 获取路径2 String file Thread.currentThread().getContextClassLoader().getResource(path).getFile(); Inp…

mac xcode工具 配置github 流程

注:这个方法是服务于私有仓库配置,同时建立与之前本机 多端仓库配置的基础上实现,如有疑问,请留言。 这个方法可行,但不一定是最好。 1、初始化一个私有github仓库,初始化github 的token【这里一定记得要…

容器在公有云上的落地姿势

1.容器天生隔离能力不足1.1 容器是一种进程隔离技术,并非虚拟化技术容器(container),并不是一种虚拟化(virtualization)技术,而是一种进程隔离(isolation)技术&#xff0…

6.6、电子邮件

电子邮件(E-mail)是因特网上最早流行的一种应用\color{red}最早流行的一种应用最早流行的一种应用,并且仍然是当今因特网上最重要、最实用的应用之一 传统的电话通信属于实时通信,存在以下两个缺点: 电话通信的主叫和被叫双方必须…

Raki的读paper小记:ConTinTin: Continual Learning from Task Instructions

Abstract&Introduction&Related Work 研究任务 Continual Learning from Task Instructions已有方法和相关工作面临挑战创新思路 InstructionSpeak包含两个策略,充分利用task instruction来改善前向转移和后向转移: 一个是从negative的输出中学…

nodejs图片上传/头像上传

项目结构 utils文件夹无用,没文件 前端代码 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"utf-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport&…

大屏展示项目开发常用属性

图例legend前言&#xff1a;1.[配置项手册](https://echarts.apache.org/zh/option.html#title)2.[使用手册可以快速入门](https://echarts.apache.org/handbook/zh/get-started/)3.4.一、图例legend1.1 设置图例的位置 &#xff08;上下左右&#xff09;1.1.1 上下&#xff08…

【爪洼岛冒险记】第2站:带你学会:Java中三种输出语句,java中基本数据类型,学会变量,常量,类型转换知识点

&#x1f331;博主简介&#xff1a;是瑶瑶子啦&#xff0c;一名大一计科生&#xff0c;目前在努力学习C进阶、数据结构、算法、JavaSE。热爱写博客~正在努力成为一个厉害的开发程序媛&#xff01; &#x1f4dc;所属专栏&#xff1a;爪洼岛冒险记 ✈往期博文回顾&#xff1a;【…

【译】eBPF 和服务网格:还不能丢掉 Sidecar

服务网格以典型的 sidecar 模型为人熟知&#xff0c;将 sidecar 容器与应用容器部署在同一个 Pod 中。虽说 sidecar 并非很新的模型&#xff08;操作系统的 systemd、initd、cron 进程&#xff1b;Java 的多线程&#xff09;&#xff0c;但是以这种与业务逻辑分离的方式来提供服…

主库出问题了,从库怎么办?

在前面的文章中,我和你介绍了 MySQL 主备复制的基础结构,但这些都是一主一备的结构。 大多数的互联网应用场景都是读多写少,因此你负责的业务,在发展过程中很可能先会遇到读性能的问题。而在数据库层解决读性能问题,就要涉及到接下来两篇文章要讨论的架构:一主多从。 今…

Qt之标准对话框(QColorDialog、QInputDialog、QFontDialog)

文章目录QColorDialog使用方式QInputDialog使用方式QFontDialog使用方式提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 QColorDialog QDialog类用于指定颜色的。 使用方式 设置最开始的颜色 setCurrentColor(Qt::red);//其他的颜色Qt::white Qt::…

迪文串口屏(1)-DMG80480C070_03WTC

由于成本缘故&#xff0c;用迪文串口屏去替换项目里的大彩串口屏&#xff0c;样品型号为DMG80480C070_03WTC。不过说句实话&#xff0c;迪文串口屏没有大彩串口屏那么容易上手。产品命名及硬件特性10Pin_1.0mm座子&#xff0c;7.0英寸&#xff0c;800*480分辨率&#xff0c;16.…

机器学习--方差和偏差、Bagging、Boosting、Stacking

目录 一、方差和偏差 数学定义 对公式的解释 减小偏差、方差、噪声 总结 二、Bagging 代码实现 bagging什么时候会变好 不稳定的learner ​总结 三、Boosting Gradient boosting gradient boosting 的代码实现 gradient boosting的效果 ​总结 四、Stacking st…

秒杀项目总结

秒杀就是同一个时刻有大量的请求争抢购买同一个商品&#xff0c;并且完成交易的过程 也就是大量的并发读和并发写 先制作一个增删改查的秒杀系统&#xff0c;但是想让这个系统支持高并发访问就没那么容易了&#xff0c; 如何让这个秒杀系统面对百万级的请求流量不出故障&…