MySQL数据库误删恢复–超详细

MySQL数据库误删恢复–超详细MySQL 误删数据库 造成了数据的丢失 这是非常尴尬的 但是有许多方案可以用来尝试恢复丢失的数据库 本章主要给大家介绍了关于 MySQL 数据库误删恢复的详细过程

大家好,欢迎来到IT知识分享网。

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。

MySQL数据库误删恢复--超详细

MySQL数据库误删恢复—超详细

MySQL误删数据库,造成了数据的丢失,这是非常尴尬的,但是有许多方案可以用来尝试恢复丢失的数据库,这篇文章主要给大家介绍了关于MySQL数据库误删恢复的超详细过程

前言

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

1、创建表

2、BigLog日志相关 

2.1、检查biglog状态是否开启 

声明: 当前为mysql版本5.7  当前为mysql版本5.7  当前为mysql版本5.7 

2.1.1、Navicat工具执行

  •  OFF 是未开启状态,如果不是ON 开启状态需要开启为ON。{默认情况下就是关闭状态}MySQL数据库误删恢复--超详细

2.1.2、命令行执行

  • 其中-h表示服务器名,localhost表示本地;-u为数据库用户名,root是mysql默认用户名;-p为密码,如果设置了密码,可直接在-p后链接输入,如:-proot;如果用户没有设置密码,显示Enter password时,直接回车即可。MySQL数据库误删恢复--超详细

2.2、开启biglog

  •  执行语句开启biglog

执行结果:MySQL数据库误删恢复--超详细

注意: 报错了! 报错了! 报错不可怕,可怕的是报错没有征兆。如果要永久修改log_bin的值,需要修改MySQL的配置文件(my.cnf或my.ini),并重启MySQL服务器使修改生效。( 只读变量,不能使用set修改,只能通过修改my.cnf或my.ini文件再重启生效 )

  •  遇到这种错误,需要修改 my.cnf <Linux系统> 或 my.ini<Windows系统> 配置文件,在 [mysqld] 下面增加 log-bin=mysql-bin  后,重启MySQL服务即可
  • 在 [mysqld] 段落中添加的log-bin=mysql-bin这是一个 MySQL 数据库的配置选项,用于开启二进制日志记录。二进制日志可以记录所有的数据库操作,包括增删改查等。开启二进制日志记录可以用于备份和恢复数据库,以及进行数据复制等操作。
  • 在 [mysqld] 段落中添加 server-id=1 (其中的1可以替换为任意整数,但要确保主从之间的server-id不同)
  • server-id 是 MySQL 数据库中的一条配置参数,用于设置 MySQL 实例的唯一 ID。每个 MySQL 实例都必须有一个唯一的 server-id,以便 MySQL 集群中的各个节点能够相互识别和通信。通常情况下,server-id 参数会被设置为一个唯一的数字或字符串,比如可以设置为当前服务器的 IP 地址或主机名。如果在一个 MySQL 集群中配置不正确,可能会导致数据同步出现问题,因此需要谨慎配置。
  •   ON 是开启状态,如果是开启状态那就可以做数据恢复了。MySQL数据库误删恢复--超详细2.3、查看biglog日志文件MySQL数据库误删恢复--超详细2.3.1、查看master状态MySQL数据库误删恢复--超详细 2.3.2、查看第一个binlog文件内容MySQL数据库误删恢复--超详细 2.3.3、查看指定binlog文件的内容MySQL数据库误删恢复--超详细

注意: 上一个事件的结束位置,就是下一个事件的开始位置。如下↓↓↓MySQL数据库误删恢复--超详细

2.3.4、刷新log日志
MySQL数据库误删恢复--超详细
2.3.5、删除日志文件

MySQL删除日志的方式有以下几种:

  • 通过Reset Master指令删除全部binlog日志,删除之后,日志编号将从xxxx.00001重新开始。
  • 执行指令purge master logs to ‘mysqlbin.’,该命令将删除指定编号之前的所有日志。
  • 执行指令purge master logs before ‘yyyy-mm-dd hh24:mi:ss’,该命令将删除指定日期之前的所有日志。
  • 列出所有日志
  • MySQL数据库误删恢复--超详细
  •  指定删除
  • MySQL数据库误删恢复--超详细
  •   指定日期删除(该命令将删除指定日期之前的所有日志)MySQL数据库误删恢复--超详细
  • 删除全部binlog日志MySQL数据库误删恢复--超详细
  • 2.3.6、查看和修改日志文件有效期

 说明:

  • 查看日志文件的有效期 show variables like ‘%expire_logs_days%’;默认有效期为 0,表示 Binlog 日志的自动清理功能是没有启用的
  • 设置日志文件有效期 参数set global expire_logs_days=7; 此参数的含义是设置日志的过期天数为7天,过了指定的天数后日志将会被自动删除,这样将有利于减少DBA管理日志的工作量。
  • 查看日志文件的有效期MySQL数据库误删恢复--超详细
  • 设置日志文件有效期MySQL数据库误删恢复--超详细

3、误删恢复

3.1、查看数据库

3.2、查看表中的数据

3.3、查看用户表相关操作日志

说明: show binary logs; 和 show master logs; 都是显示所有可用的binlog日志文件列表。

 注意: 可以看到我之前删除的表数据已经被记录了 ,由于之前演示删除日志,我的日志是不完整的不完整的日志是不能恢复的 。(开启日志后 重新创一个库 详情查看:3.4重新创建库) ↓↓↓

3.4、重新创建库

  • 删除库
  • 清空全部日志
  • 创建库
  • 查看日志信息MySQL数据库误删恢复--超详细

3.4、删除数据库 text MySQL数据库误删恢复--超详细

可以看到列表text库已经被删除 

3.5、恢复数据库

3.5.1、查看日志文件中的信息3.5.2、利用事件开始结束位置进行恢复

以上该命令是一个从MySQL二进制日志文件中提取数据并导入到MySQL数据库的命令。具体解释如下:

  • mysqlbinlog:MySQL二进制日志文件命令,用于读取、处理和输出MySQL二进制日志文件中的内容。
  • –start-position=154:指定从二进制日志文件的154个字节开始读取,默认情况下,mysqlbinlog从文件的开头开始读取。
  • –stop-position=427:指定从二进制日志文件的427个字节结束读取,默认情况下,mysqlbinlog读取到文件的末尾。
  • mysql-bin.000001:二进制日志文件名,表示要读取的二进制日志文件。
  • |:管道符,将前面的命令的输出作为后面命令的输入。
  • mysql:MySQL客户端命令,用于连接和操作MySQL数据库。
  • -uroot:指定以root用户身份连接MySQL数据库。
  • -p:表示连接MySQL数据库时需要输入密码。
  • 注意: 此命令是使用终端,进入MySQL时的路径下的 data 目录下执行。MySQL数据库误删恢复--超详细
  •  查看是否恢复删除的库textMySQL数据库误删恢复--超详细

3.5.3、查看mysql-bin.000001文件日志细节

说明

  • 由于binlog是二进制的文件,使用mysqlbinlog命令进行转换。
  • mysqlbinlog:MySQL二进制日志文件命令,用于读取、处理和输出MySQL二进制日志文件中的内容。
  •  找到安装MySQL时的路径下的 data 目录,不管你是Linux 或windows,我目前是windows 我就在data目录下使用cmd (如果是linux查详细的日志信息内容,同理进入MySQL时的路径下的 data 目录,这个时候需要用 ls -la 来查看细节,执行命令:mysqlbinlog ‘mysql-bin.000001’ ) 
  • 配置MySQL环境变量,不配置执行命令会失败,右击我的电脑–高级系统设置–环境变量–系统变量–Path(点击,添加MySQL的bin目录)
  • 生成mysql-bin.000001文件日志细节名称是xj.sqlMySQL数据库误删恢复--超详细
  • 生成后的mysql-bin.000001文件日志位置MySQL数据库误删恢复--超详细
  •  解析后的mysql-bin.000001文件日志细节MySQL数据库误删恢复--超详细

3.5.4、利用事件时间节点进行恢复
  • 查看恢复的text库
  • MySQL数据库误删恢复--超详细

3.6、恢复数据库表

3.6.1、进入库
  • 可以看到text库下没有表
  • MySQL数据库误删恢复--超详细
  • 3.6.2、库下创建表
  • 建表语句文章开头已经给大家准备直接拿过来执行。MySQL数据库误删恢复--超详细
  • 表已经创建成功
  •   MySQL数据库误删恢复--超详细
  • 3.6.3、库下的表中添加数据MySQL数据库误删恢复--超详细

3.6.4、删表之间查看日志信息MySQL数据库误删恢复--超详细MySQL数据库误删恢复--超详细3.6.4、删除表

  •  查询user_misjudge已经不存在了MySQL数据库误删恢复--超详细
  • 3.6.5、恢复表
  •  不用再说了吧一定要终端执行以上命令,离开mysql命令行进入mysql路径下的 data 目录使用终端执行。MySQL数据库误删恢复--超详细

3.6.7、查看恢复的表
MySQL数据库误删恢复--超详细

  • 查看日志MySQL数据库误删恢复--超详细

 可以看到 我们只恢复了表 并没有恢复数据 。为什么???  往下继续↓↓

3.6.8、分析日志

原因:

       在导航{3.6.5、恢复表} 我们执行的语句mysqlbinlog –start-position=720 –stop-position=1579 mysql-bin.000001 | mysql -uroot -p, 事件开始位置720 ,事件结束位置1579,说明我们位置不对呗,这个位置只能恢复表不能恢复数据。(想要恢复数据应该在 事件的结束位置应该在 删除表之前的最后连接的位置才对)

  • 完整日志如下:

创建表的起始位置是720 ,在日志中删除表的结束之前最后连接的位置是2190,这样就可以恢复我们删表之前的表和两条数据。MySQL数据库误删恢复--超详细

  •  再次恢复,直接告诉你会报错MySQL数据库误删恢复--超详细
  •  为什么报错,已经存在了 MySQL数据库误删恢复--超详细

3.6.9、恢复表中数据
  • 既然表恢复了,那就恢复数据呗,找事件开始结束位置数据节点
  • 事件开始位置720 ~事件结束位置1579 恢复的是表,那么事件开始位置1532~事件结束位置2189恢复的就是那两条数据。MySQL数据库误删恢复--超详细
  •  查看恢复的两条数据MySQL数据库误删恢复--超详细

MySQL数据库误删恢复--超详细

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/124973.html

(0)
上一篇 2025-10-01 19:10
下一篇 2025-10-01 19:15

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信