【问题发生】
某个系统,不小心在界面上误删除了数据,查数据库确认对应的数据已经从数据库中删掉。
检查 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)数据库层的数据恢复后,还需要做应用层的验证才能最终确认恢复成功。
分享到:
相关推荐
二进制日志(binnary log)以事件形式记录了...主从复制:mysql replication在master端开启binlog,master把它的二进制日志传递给slaves来达到master-slave数据一致的目的。 数据恢复:通过mysqlbinlog工具来恢复数据。
mysqlbinlog和binlog2sql的使用及mysql通过binlog日志恢复数据库数据
当发生误删、误增、误改时,它可以帮助我们从binlog中快速定位到误操作的重做语句(redo sql),同时推理出回滚语句(undo sql)。此外,它还可以结合[mysqld]的init-connect参数做mysql 8.0的数据库审计。 一. 对dml...
MySQL Binlog Digger是一个基于图形界面的MySQL Binlog挖掘分析工具,可以为数据恢复提供undo sql回滚语句,它免安装,能对在线binlog与离线binlog进行分析,在选定在线binlog(甚至分析到最新日志)或离线binlog日志...
简单好用的mysql binlog查看工具 采集于网络。
本文主要通过实际操作说明对binlog日志恢复MySQL数据库删除数据的方法进行说明,内容主要包括MySQL数据库binlog日志查询、恢复等相关介绍,希望对大家在工作及生活中遇到的此类问题有所帮助,如需操作指导,可留言!
个人整理,mysql binlog 日志恢复
mysql-binlog介绍 ...1、STATMENT模式:基于SQL语句的复制(statement-based replication, SBR),每一条会修改数据的sql语句会记录到binlog中。 优点:不需要记录每一条SQL语句与每行的数据变化,这样子bi
使用这种方式的前提必须有最近的备份集或者知道出现误操作起始的binlog 位点或者GTID,利用备份集恢复到中间的机器上,然后利用MySQL的slave 特性 START SLAVE [SQL_THREAD] UNTIL MASTER_LOG_FILE = ‘log_n
MySQL Binlog Digger 4.19安装包,mysql日志回滚、解析、挖掘、支持离线在线 支持解析全sql字段语句
由于mysqlbinlog命令下无法筛选出某一个表的数据所以只能把日志文件全部导出
mysql通过binlog同步数据到redis的方法.docx
这是一个eclipse安装插件,在oxygen下测试是可用的。...操作:1、获取binlog文件 2、选中要处理的部分 3、选择菜单“jhh->binlog->”下对应的操作 4、会在相同目录下生成sql文件(文件名相同,加了sql后缀)
赠送jar包:mysql-binlog-connector-java-0.21.0.jar; 赠送原API文档:mysql-binlog-connector-java-0.21.0-javadoc.jar; 赠送源代码:mysql-binlog-connector-java-0.21.0-sources.jar; 赠送Maven依赖信息文件:...
最近线上误操作了一个数据,由于是直接修改的数据库,所有唯一的恢复方式就在mysql的binlog。binlog使用的是ROW模式,即受影响的每条记录都会生成一个sql。同时利用了binlog2sql项目。 MySQL Binary Log也就是常说的...
MySQL Binlog Digger基于图形界面,免安装的日志分析工具,能对在线binlog与离线binlog进行分析,在选定在线binlog或离线binlog日志后,可对数据库、表、binlog开始时间、binlog结束时间、误操作的重做类型进行信息...
当发生误删、误增、误改时,它可以帮助我们从binlog中快速定位到误操作的重做语句(redo sql),同时推理出回滚语句(undo sql)。此外,它还可以结合[mysqld]的init-connect参数做mysql 8.0的数据库审计。
开启mysql-binlog操作 binlog日志用于记录所有更新了数据或者已经潜在更新了数据的所有语句。语句以“事件”的形式保存,它描述数据更改。当我们因为某种原因导致数据库出现故障时,就可以利用binlog日志来挽回...