【问题发生】
某个系统,不小心在界面上误删除了数据,查数据库确认对应的数据已经从数据库中删掉。
检查 mysql 设置,binlog 缺省开启,对应时间的binlog文件保存完整,可以用来恢复数据。
【数据库层的数据恢复】
利用 mysqldump --no-data 建立镜像的数据库环境,作为验证工作的环境。
使用 mysqlbinlog logfile databasename > logfile.sql 将binlog文件中的二进制内容转化为sql文本。
观察sql文本,并利用已知主键搜索,查到相关的 INSERT/UPDATE 记录。不过我很疑惑没有查到对应的 DELETE记录。
在验证数据库环境中手动执行查到的INSERT、UPDATE记录,在数据库中确认数据基本完好。
【应用层验证】
整理手动执行的记录,在真实环境中再次执行手动执行,在应用系统中确认数据基本完好。
【经验和教训】
1)手动恢复数据耗时耗力,需要同时对数据库实现和应用层都很熟悉,这是最后的手段,能不用就不用;
2)能够查看到binlog 文件保存完整,就可以认为数据可以恢复,只是恢复的完整程度需要继续确认。
3)必须在镜像环境中工作,工作验证无误以后,将在镜像环境中的操作严格复制到实际工作环境中。
4)在我的例子中,因为记录条目数较少(<50条),手动恢复的方式较为适合。
5)实际我的工作中优先尝试基于脚本的自动恢复,先后遇到数据库表格式有变化、字符集问题、特殊字符问题,反而耽误了时间。
应该仅对数据量较大(>500条)的情况做自动恢复。
6)数据库层的数据恢复后,还需要做应用层的验证才能最终确认恢复成功。
分享到:
相关推荐
MySQL Binlog Digger 4.8.0 是一个专为MySQL数据库设计的强大的日志挖掘和分析工具,尤其适用于数据恢复场景。它采用图形用户界面,使得操作更加直观易用。该工具支持在线和离线两种模式的binlog分析,能够帮助用户...
MySQL的binlog(二进制日志)是数据库系统中至关重要的组件,它记录了所有对数据库进行...在面临磁盘故障时,binlog可以成为恢复数据的关键。因此,了解和熟练掌握binlog的相关知识对数据库管理员来说是至关重要的。
当需要从Binlog恢复数据时,首先要确定数据丢失的时间点,然后找到那个时间点之前的最后一个完整事务。这可以通过`mysqlbinlog`工具来完成,例如`mysqlbinlog --start-position=0 --stop-position=500 mysql-bin....
此外,了解并熟练掌握数据恢复方法至关重要,以确保在发生问题时能够迅速恢复数据,避免业务中断。同时,保持良好的数据管理和维护习惯,例如定期检查硬件健康状况、更新数据库软件以及监控数据库性能,也是预防数据...
这将把指定的binlog文件转换为SQL脚本,可以手动审查或导入到数据库来恢复数据。 在进行数据恢复时,通常涉及以下几个步骤: 1. **确定恢复点**:根据错误发生的时间,定位到相应的binlog文件和位置。 2. **获取...
对于篡改发生后的数据,如果不能直接从binlog中恢复,可能需要依赖其他手段,比如业务日志或者其他备份来手动补全。 最后,恢复过程结束后,需要验证数据的正确性,并在确认无误后,可以将临时数据库的数据同步到...
MySQL binlog(二进制日志)是数据库系统中用于记录所有改变数据库状态的数据操作的重要组件,它在数据恢复和高可用性方案中扮演着关键角色。MySQL binlog远程备份是为了确保即使在本地服务器出现问题时,也能保持...
在MySQL数据库中,Binlog(二进制日志)记录了所有更改数据库表结构或者数据的操作,这对于实现基于时间点的数据恢复、主从复制等场景至关重要。然而,随着数据库操作的不断增加,Binlog日志文件也会逐渐增大,占据...
本案例将详细讲解如何在MySQL中,特别是在Percona Server 5.6.16环境下,从误执行的`TRUNCATE TABLE`操作中恢复数据。 首先,理解`TRUNCATE TABLE`与`DELETE`的区别很重要。`TRUNCATE`比`DELETE`更快,因为它不记录...
本文将详细介绍如何在MySQL环境中进行误删表或数据库的恢复,并进一步讲解如何将整个数据库恢复到某个特定的时间点。 #### 一、记录被误删的恢复 当单条或多条记录被误删时,可以通过以下步骤进行恢复: 1. **...
MySQL的二进制日志(BINLOG)是数据库系统中非常关键的一个部分,它记录了所有改变数据库状态的语句,对于数据恢复、主从复制等操作至关重要。然而,随着时间的推移,二进制日志文件可能会占用大量的磁盘空间,因此...
MySQL数据库的二进制日志(binlog)记录了所有改变数据库状态的事务,这对于数据恢复、主从复制以及实时数据分析等场景至关重要。监听binlog可以让应用程序捕获这些变更事件,以便实现特定的功能,例如在用户删除...
MySQL数据库的二进制日志(Binary Log,简称binlog)是用于记录所有改变数据库状态的语句,它是实现数据复制、恢复以及提供审计功能的关键组件。本文将深入讲解如何正确清理MySQL的binlog日志,确保数据的安全性和...
此外,还可以考虑使用第三方工具,如 Percona Xtrabackup 或 MySQL Enterprise Backup,它们提供了更高级的恢复选项,可以更方便地从 binlog 文件中恢复数据,甚至在某些情况下可以做到增量恢复。 总的来说,防止...
5. **利用`binlog`恢复数据**:使用`mysqlbinlog`工具,根据binlog的时间戳定位到误删表的DDL语句之前,并将之后的所有DML语句导出到SQL文件。然后,在新的表上执行这些SQL语句,以恢复数据。这一步可能需要对binlog...
binlog的主要用途包括数据恢复和主从复制。在本篇文章中,我们将讨论如何监听MySQL表内容的变化,并通过开启binlog来实现这一目标。 首先,binlog对于数据安全至关重要。当系统发生故障或需要恢复到某一特定时间点...
- 要从binlog恢复数据,可以使用第三方工具如`binlog2sql`,它能够解析binlog并转换为SQL语句执行。 - 在主从复制中,从库的`relay-log`用于接收并缓存主服务器的binlog事件,以便于本地执行。 了解并熟练掌握...
《高可用MySQL_构建健壮的数据中心_第2版》这本书深入探讨了如何在实际环境中构建和维护高可用性的MySQL数据库系统。MySQL是全球最受欢迎的开源关系型数据库管理系统之一,其高可用性对于企业的业务连续性和数据安全...