Mysql误删除DELETE数据找回操作指南

Mysql误删除DELETE数据找回操作指南

1. 背景

在使用Mysql时,可能会因为人为操作失误误删除了数据,如果没有及时备份就会带来严重的后果,影响业务。所以,本文将介绍在误删除DELETE数据后如何找回。

2. 解决方案

2.1. 使用undo日志

Mysql通过undo日志来记录所有事务的变更,包括DELETE语句。当误删除数据时,可以使用undo日志来还原数据。

步骤1:查看undo表空间的大小

SHOW GLOBAL VARIABLES LIKE 'innodb_undo_directory';

此命令将会返回undo表空间的路径。可以借助操作系统的空间占用命令来查看此路径下的空间占用情况,以判断是否需要临时增加硬盘空间。

步骤2:停止mysql实例

sudo service mysql stop

步骤3:修改mysql配置文件

将配置文件中的参数 undo_log_recovery 设置为 ON,开启undo日志恢复选项。

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
...
innodb_undo_log_recovery=ON
...

步骤4:启动mysql实例

sudo service mysql start

步骤5:进行数据恢复

使用如下命令打开mysql客户端,进入目标数据库。

mysql -u root -p
use xxx;

然后查找误删除的记录的binlog位置。可以查看mysql的binlog文件,找到删除语句执行时的位置。

SHOW BINARY LOGS;

查看具体binlog文件中的内容。

mysqlbinlog /var/log/mysql/mysql-bin.000XXX

找到误删除的记录的语句,复制该语句并在mysql客户端执行,即可将数据恢复。

2.2. 使用Binlog日志

在Mysql中,Binlog日志包括二进制日志和查询日志两种。其中,二进制日志记录了所有的增删改操作,它们都有TIME和对应的事件,因此我们可以通过解析Binlog日志来找回误删除数据。

步骤1:查听误删除数据的时间

因为binlog记录了所有操作的时间点,所以可以通过查听误删除数据的时间来定位到相应的binlog文件。

步骤2:使用mysqlbinlog解析binlog文件

使用mysqlbinlog工具解析掉所有的binlog文件,并找到误删除记录的位置。

mysqlbinlog /var/log/mysql/mysql-bin.000XXX

根据解析出来的binlog记录,构造SQL语句进行恢复。

2.3. 使用第三方工具

还可以使用一些第三方工具来完成误删除数据的恢复。例如,binlog2sql、mydumper等工具,都可以很好的完成数据恢复的工作,可以根据实际情况选择最适合的工具。

3. 总结

在Mysql中,误操作导致删除数据的情况难免发生,本文介绍了三种不同的解决方案:使用undo日志、使用Binlog日志和使用第三方工具,每个方案都有其适用的场景,具体选择哪种方案需要根据实际情况来判断。

4. 示例

示例1

小明误删了数据库中user表的一条记录,此记录信息如下:

id name sex
100001 小明明

使用undo日志来恢复此误删除的记录。

mysql -u root -p
use test;

查找删除记录的位置,并记录对应的binlog文件。

SHOW BINARY LOGS;
mysqlbinlog /var/log/mysql/mysql-bin.000XXX

然后根据找到的binlog中删除操作的语句进行恢复即可。

示例2

小红误删了student表中的一条记录,此记录信息如下:

id name score
100001 小红红 90

此时,我们可以使用第三方工具mydumper进行数据恢复。

apt-get install mydumper
myloader -u root -p xxx -d xxx -B xxx -t 32 -t xxx

注意:myloader命令中的选项参数需要根据实际情况进行填写。

等待mydumper恢复完成后,可到恢复后的数据库中查看误删除记录是否已经恢复。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Mysql误删除DELETE数据找回操作指南 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • MySQL的意向共享锁、意向排它锁和死锁

    MySQL意向锁和死锁攻略 意向锁 MySQL中有两种意向锁:意向共享锁(IS)和意向排它锁(IX)。当一个事务请求一张表的排它锁或者共享锁时,MySQL会先判断表是否已经被其它事务加了锁。若没有加锁,则直接获取锁;若被加锁,则会判断待加的锁类型。若是要请求共享锁,则会在表上加意向共享锁(IS);若是要请求排它锁,则会在表上加意向排它锁(IX)。意向锁只是一…

    database 2023年5月19日
    00
  • MySQL如何优化索引

    MySQL优化索引是提高数据库性能的重要手段之一,具体步骤如下: 1. 查看索引情况 利用MySQL命令行工具或者Navicat等管理工具,查看当前数据库表的索引情况。执行如下SQL语句: SHOW INDEX FROM 表名; 可以查看表中所有的索引信息,包括索引名、字段、唯一性等等。根据索引信息,分析当前表的索引情况。 2. 添加缺失索引 针对没有索引或…

    database 2023年5月19日
    00
  • 详解CentOS7下PostgreSQL 11的安装和配置教程

    详解CentOS7下PostgreSQL 11的安装和配置教程 本文将介绍在 CentOS 7 系统下安装 PostgreSQL 11 数据库的详细步骤和配置。 步骤一:安装 PostgreSQL 11 更新系统软件源 $ yum update -y 添加 PostgreSQL 的官方仓库 $ rpm -ivh https://download.postgr…

    database 2023年5月22日
    00
  • 零基础之Node.js搭建API服务器的详解

    下面是“零基础之Node.js搭建API服务器的详解”的完整攻略: 介绍 本文主要讲解如何使用Node.js搭建一个简单的API服务器,使用的工具有Express和MongoDB,主要内容包括: 安装Node.js和MongoDB 使用Express快速生成项目框架 定义API接口 连接数据库 编写API接口的实现 测试API接口 步骤 1. 安装Node.…

    database 2023年5月22日
    00
  • mysql 8.0.15 安装图文教程及数据库基础

    MySQL 8.0.15 安装图文教程 下载MySQL 8.0.15 访问MySQL官网(https://dev.mysql.com/downloads/mysql/),选择适合当前系统的安装包进行下载。单击下载按钮后会进入登录页面,可以使用Oracle账号登陆或者创建一个新的账号。如果选择创建新账号,在完成账号创建后会再次进入MySQL的下载页面。 安装M…

    database 2023年5月21日
    00
  • Node服务端实战之操作数据库示例详解

    我来给你详细讲解“Node服务端实战之操作数据库示例详解”的完整攻略。 简述 本文主要介绍如何使用Node.js连接数据库,以及如何使用Node.js进行数据库的操作。其中,介绍了比较流行的关系型数据库(MySQL)、非关系型数据库(MongoDB)和面向对象的数据库(Redis)。 准备工作 在开始操作数据库之前,需要安装相关的数据库驱动和模块。本文以My…

    database 2023年5月21日
    00
  • mysql优化之like和=性能详析

    下面是关于“mysql优化之like和=性能详析”的详细攻略。 1. 为什么要优化like和=查询 在MySQL中,like和=是常见的查询方式,但是在大数据量下,它们的查询速度可能会变得相对较慢,尤其是like查询,因为like查询需要做全表扫描,而=查询可以利用索引进行优化。因此,在使用like和=查询时,我们需要针对具体情况进行性能优化,以增加查询速度…

    database 2023年5月19日
    00
  • java 执行redis的部分方法

    @Autowired private RedisTemplate<String, Object> redisTemplate; public void setRedisTemplate(RedisTemplate<String, Object> redisTemplate) { this.redisTemplate = redisTe…

    Redis 2023年4月12日
    00
合作推广
合作推广
分享本页
返回顶部