MySQL如何恢复不小心误删的数据记录(binlog)

这篇具有很好参考价值的文章主要介绍了MySQL如何恢复不小心误删的数据记录(binlog)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

题主于今天(2022年11月27日) 在线上环境误操作删除了记录,且没有备份数据,通宵排查事故原因,终于没有酿成生产事故。谨以此文记录。

参考资料

https://blog.csdn.net/qq_23543983/article/details/127298578

本文是对上文操作的实际补充说明。

1 查看binlog日志

首先确保你binlog日志是打开的。一般线上环境都会打开。命令如下:

show VARIABLES like '%log_bin%';

然后登陆你存放MySQL的服务器。找到存放binlog日志的文件夹。一般项目组运维会知道该文件位置。找到之后会发现非常多的日志文件,如下图:

MySQL如何恢复不小心误删的数据记录(binlog)
注意,最后一个日志文件是实时增量更新的。一直会写入该文件。如果是你近期删除的,直接找上图圈出的文件即可。如果是其它时间段删除的,就找日期命名的文件。

恢复数据时间越早越快越好。我们服务器上只保管45天的记录!

2 找到对应binlog文件,直接执行命令

下面的sql给了个时间段。是你抓取误操作的大致时间段。

 mysqlbinlog --no-defaults --start-datetime='2022-10-12 15:00:00' --stop-datetime='2022-10-12 17:00:00' /var/lib/mysql/mysql-bin.000031 >/var/lib/mysql/mysql_delete20221012.sql

执行完毕后,会生成一个sql文件。上面有你全部误操作的数据,(数据经过加密了)里面有非常多的记录,我们只需要找到开始的 index 和 结束的index 即可。

推荐使用 head -100 ; 和 tail -100 来查看开始和结束的结点。找到这两个结果值,记录下:

332334767

366250788

随后执行下面命令, 通过节点精确导出误操作的sql :

mysqlbinlog --no-defaults -vv --start-position=332334767 --stop-position=366250788 /var/lib/mysql/mysql-bin.000031 >/var/lib/mysql/bin_data.sql

其实就是拼接你的时间段。会把所有INSERT,UPDATE语句全部抓出(如下图图例):

MySQL如何恢复不小心误删的数据记录(binlog)

3 找到你误删的数据

一般来说你误删的数据会大致记下来一个标识。我这里是单据号。我隐约记得被删除的数据的单据编码是多少,那么我们就可以模糊搜索该条件:

less bin_data.sql | grep -C 100 "单据编号xxxxx"

这样就能得到对应的反向INSERT语句了,如下所示:

MySQL如何恢复不小心误删的数据记录(binlog)

4 将delete语句转换成insert语句

可以自行百度,也可以参考下面命令:

cat /var/lib/mysql/bin_data.sql | sed -n '/###/p' | sed 's/### //g;s/\/\*.*/,/g;s/DELETE FROM/INSERT INTO/g;s/WHERE/SELECT/g;' |sed -r 's/(@17.*),/\1;/g' | sed 's/@[1-9]=//g' | sed 's/@[1-9][0-9]=//g' >  /var/lib/mysql/delete2insert.sql

需要注意要符合语法格式。你得自己手工改改,但是大同小异就是了。需要在文件中手动改一些,;之类的符号。

也可以参考下文:https://www.lmlphp.com/user/62049/article/item/2326681/

完成

引以为戒!文章来源地址https://www.toymoban.com/news/detail-470160.html

到了这里,关于MySQL如何恢复不小心误删的数据记录(binlog)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SQL中如何用快照,恢复被误删的数据?

    什么是快照 数据库快照是sql server 2005的一个新功能。MSDN上对它的定义是: 数据库快照是数据库(称为“源数据库”)的只读静态视图。在创建时,每个数据库快照在事务上都与源数据库一致。在创建数据库快照时,源数据库通常会有打开的事务。在快照可以使用之前,打开

    2024年02月13日
    浏览(16)
  • Idea中如何恢复误删的iml文件和恢复pom文件变灰并带有删除线

    一、错误情况 误删以后导致pom文件不可以使用 二、.iml文件在Idea中的作用 IDEA中的.iml文件时项目标识文件,缺少了这个文件,IDEA就无法识别项目。跟Eclipse的。project文件性质是一样的。并且这些文件不同设备上的内容也会有差异,所以我们在管理项目的时候,.project和.iml文件

    2024年02月17日
    浏览(13)
  • 面试官:MySQL误删表数据,如何快速恢复丢失的数据?

    相信后端研发的同学在开发过程经常会遇到产品临时修改线上数据的需求,如果手法很稳那么很庆幸可以很快完成任务,很不幸某一天突然手一抖把表里的数据修改错误或者误删了,这个时候你会发现各种问题反馈接踵而来。 如果身边有BDA或者有这方面经验的同事那么可以很

    2024年02月09日
    浏览(11)
  • MySQL 恢复误删数据

    MySQL 恢复误删数据,针对 window 和 Linux 均适用,只需要找到对应的 binlog 目录文件,默认就是 MySQL 安装目录下的 data 文件夹 一般误删数据,先停止所有操作,备份数据库 1、查看是否启用 binlog 日志 2、查看所有 binlog 日志 3、查看正在使用的日志 4、查找日志所在文件夹 5、

    2024年02月07日
    浏览(15)
  • 【MYSQL】误删数据恢复流程说明

    误删数据恢复流程说明 项目场景:使用navicat时,不小心误删除几条数据,需要对数据进行恢复 第一步:保证mysql已经开启binlog,查看命令 : 如果没有开启binlog,也没有预先生成回滚SQL,那可能真的无法快速回滚了。对存放重要业务数据的MySQL,强烈建议开启binlog。 查看bi

    2024年02月12日
    浏览(15)
  • MySQL数据库误删恢复

           经常听说删库跑路这真的不只是一句玩笑话,若不小心删除了数据库,事情很严重。你一个不小心可能会给公司删没。建议研发不要直连生成环境,一般的话都会分配账号权限,生产环境的账号尽量是只读,以防你一个不经意给库或表删除。一定要备份,这很重要,

    2024年02月08日
    浏览(16)
  • MySQL 开启配置binlog以及通过binlog恢复数据

       binlog是MySQL sever层维护的一种二进制日志,binlog是记录所有数据库表结构变更(例如CREATE、ALTER TABLE、DROP等)以及表数据修改(INSERT、UPDATE、DELETE、TRUNCATE等)的二进制日志。不会记录SELECT和SHOW这类操作,因为这类操作对数据本身并没有修改。 作用主要有: 主从复制:在

    2024年02月03日
    浏览(9)
  • MySQL——通过binlog恢复数据

    目录 1.binlog基本概念 2.MySQL开启binlog 3.使用binlog日志恢复数据 3.1.恢复前准备工作 3.2.数据恢复 3.2.1.通过mysqlbinlog将binlog转为sql,以方便查询具体位置 3.2.2.查看生成的backuptmp.sql,最终确定需要恢复的起始位置为219,结束位置为982 3.2.3.通过mysqlbinlog执行恢复操作 前言 : mysqldu

    2024年02月06日
    浏览(15)
  • windows下mysql中binlog日志分析和数据恢复

    看到了是没有开启的。 不能通过命令的方式去打开,因为会提示说这个参数是 只读 的。如下图: 所以,打开mysql的配置文件,找到mysql的配置文件(和Linux下的文件名是不一样的,Linux是my.cnf),windows默认的在 C:ProgramDataMySQLMySQL Server 5.7my.ini 配置好之后,要 进行重启mysql服务

    2024年02月15日
    浏览(8)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包