当数据被误删除/误操作后造成数据丢失。你尝试过用什么手段来挽救数据/损失?

一、前提

  1. 当数据被误删除/误操作后,第一时间要关闭数据库。业务方需要紧急挂停机公告,避免数据二次污染,用于保护数据的一致性
  2. BINLOG格式为ROW格式,不讨论其他格式的BINLOG

二、数据被误操作(update/delete/drop)造成数据丢失,可以用哪些手段来恢复?

  1. BINLOG恢复:可以使用逆向解析BINLOG工具来恢复。例如:binlog2SQL等
  2. 延迟从库: 可以通过解除延迟从库,并指定BINLOG结束位置点,可以实现数据恢复

三、数据被误删除(rm/物理文件损坏)造成数据丢失,可以用哪些手段来恢复?

  1. 如果有备份,可以通过备份恢复 mysqldump/xtrabackup + binlog 来实现全量+增量恢复
  2. 如果无备份但是有从库,可以通过主从切换,提升从库为主库,从而实现数据恢复
  3. 如果无备份并且无从库,但MySQL没有重启,可以通过拷贝/proc/$pid/fd中的文件,来进行尝试恢复
  4. 如果无备份并且无从库,但MySQL有重启,可以通过extundelete或undrop-for-innodb来恢复

原文地址:https://www.cnblogs.com/os-linux/p/11929035.html

时间: 2024-11-05 14:37:57

当数据被误删除/误操作后造成数据丢失。你尝试过用什么手段来挽救数据/损失?的相关文章

MySQL 误操作后如何快速恢复数据~!~!~

基本上每个跟数据库打交道的程序员(当然也可能是你同事)都会碰一个问题,MySQL误操作后如何快速回滚?比如,delete一张表,忘加限制条件,整张表没了.假如这还是线上环境核心业务数据,那这事就闹大了.误操作后,能快速回滚数据是非常重要的. 传统解法 用全量备份重搭实例,再利用增量binlog备份,恢复到误操作之前的状态.然后跳过误操作的SQL,再继续应用binlog.此法费时费力,不值得再推荐. 利用binlog2sql快速闪回 首先,确认你的MySQL server开启了binlog,设置了

MySQL 误操作后数据恢复(update,delete忘加where条件)

在数据库日常维护中,开发人员是最让人头痛的,很多时候都会由于SQL语句写的有问题导致服务器出问题,导致资源耗尽.最危险的操作就是在做DML操作的时候忘加where条件,导致全表更新,这是作为运维或者DBA的我们改如何处理呢?下面我分别针对update和delete操作忘加where条件导致全表更新的处理方法. 一. update 忘加where条件误操作恢复数据(binglog格式必须是ROW) 1.创建测试用的数据表 mysql> create table t1 ( -> id int un

MySQL误操作后的数据恢复

一.开启binlog. 首先查看binlog是否开启 mysql> show variables like "log_bin"; +---------------+-------+ |Variable_name | Value  +---------------+-------+ | log_bin     OFF    +---------------+-------+ 1 row in set (0.00 sec) 值为OFF,需开启,开启binlog方式如下: #vim /

Oracle 恢复被删除的数据,解决误操作删除数据

在删除数据的时候不小心,把delete语句执行错了,把别的表给delete,而且还执行了commit!真汗.......数据是相当的重要........废话少说了!赶快找方法吧: 第一种: 1.打开Flash存储的权限ALTER TABLE tableName ENABLE row movement ;2.把表还原到指定时间点flashback table tableName to timestamp to_timestamp(''2011-02-28 10:40:00'',''yyyy-mm-

MySQL 5.6 延迟复制,误操作后的数据库恢复

MySQL 5.6 支持延迟复制,可以在Slave服务器指定一个延迟的值.默认值为0秒.使用MASTER_DELAY 选项为CHANGE MASTERTO 设置N秒延迟. 1. 下面来实际演示,正常运行的从节点执行,设置延迟100秒 STOP SLAVE; CHANGE MASTER TO MASTER_DELAY = 100; START SLAVE; SHOW SLAVE STATUS\G; 显示                     SQL_Delay: 100  --延迟 100S  

SQLServer 2008以上误操作数据库恢复方法——日志尾部备份

问题: 经常看到有人误删数据,或者误操作,特别是update和delete的时候没有加where,然后就喊爹喊娘了.人非圣贤孰能无过,做错可以理解,但不能纵容,这个以后再说,现在先来解决问题. 遇到这种情况,一般都是没有做备份,不然也不会来发问了.首先要冷静,否则会有更大的灾难.直到你放弃. 解决方法: 对于这类问题,主要是找回误操作之前的数据,在2008之前,有个很出名的工具Log Exploer,听说还挺好用的,这个网上大把教程,这里就不多说了.但是唯一遗憾的是,不支持2008及更高版本,这

【转】SQLServer 2008以上误操作数据库恢复方法——日志尾部备份

4号,公司的生产数据表被全部删除,目前没有找到原因,由于刚接触SQL不久,所以短时间内不会还原,也不敢动被原服务器,于是就将原服务器停掉,拷贝出里面的PPD数据库文件,留作备份:近几天在自己的电脑上尝试修复,一直没有成功,细读了一下<SQL2005技术内幕——存储引擎>了解到删除列.删除表这些操作不会直接对每一行数据进行操作,而是直接改变他们的物理指向地址的ID,专业术语我也不是很清楚,我的理解是这样的,有时间再弄清楚,不过这足以让我明白被删除的表还是存在mdf文件中,其改变的便宜地址记录在日

binlog-rollback.pl 在线恢复update 和delete不加条件误操作sql

一.binlog-rollback.pl工具介绍 是perl开发的脚本工具,此工具主要是生成反向的DML sql语句: #基于row模式的binlog,生成DML(insert/update/delete)的rollback语句 #通过mysqlbinlog -v 解析binlog生成可读的sql文件 #提取需要处理的有效sql #"### "开头的行.如果输入的start-position位于某个event group中间,则会导致"无法识别event"错误 #将

简单误操作恢复

MySQL误操作后的恢复 场景:1.数据库每天都有全备份.2.数据库开启bin-log3.准确定位误操作语句 一. 创建全备份,建议带有 --master-data=2参数mysqldump -uroot -ppassword123 -S /data/mysqldata/3306/mysql.sock -F -R --triggers --lock-tables --master-data=2 -B test > /data/mysqldata/backup/test.$(date "+%