预防误操作导致文件/数据丢失的建议:

1.欲删除文件时,将rm命令改成mv,可在系统层面将rm命令做个alias(或参考Windows / Mac OSX做法,删除文件时先进回收站)。
2.删除数据库、表时,不要用drop命令,而是rename到一个专用归档库里;
3.删除表中数据时,不要直接用delete或truncate命令,尤其是truncate命令,目前不支持事务,无法回滚。
4.用delete命令删除数据时,应当先显式开启事务,这样误操作时,还有机会进行回滚。
5.要大批量删除数据时,可以将这些数据insert...select到一个新表,确认无误后再删除。或者反其道行之,把要保留的数据写到新表,然后将表重命名对掉。
6.执行重要命令之前,先准备好相关命令,再三确认无误才之行。

几种常见的补救情况:

1.执行DROP DATABASE / DROP TABLE命令误删库表,如果碰巧采用共享表空间模式的话,还有恢复的机会。如果没有,请直接从备份文件恢复吧。神马,你连备份文件都没有?那麻烦退出DBA届吧,一个连备份都懒得做的人,不配成为DBA的。
2.接上,采用共享表空间模式下,误删后立刻杀掉(kill -9)mysql相关进程(mysqld_safe、mysqld),然后尝试从ibdataX文件中恢复数据。
3.误删除正在运行中的MySQL表ibd或ibdataX文件。请立即申请对该实例进行维护,当然,不是指把实例关闭,而是把业务暂停,或者把该实例从线上环境摘除,不再写入新数据,然后利用linux系统的proc文件特点,把该ibd文件从内存中拷出来,再进行恢复,因为此时mysqld实例在内存中是保持打开该文件的,切记这时不要把mysqld实例关闭了。
4.接上,把复制出来的ibdataX或ibd文件拷贝回datadir后,重启mysqld进入recovery模式,innodb_force_recovery 选项从 0 - 6 逐级测试,直至能备份出(整个实例或单表的)所有数据后,再重建实例(或单表),恢复数据。
5.未开启事务模式下,执行delete误删数据。意识到后立即将mysqld(以及mysqld_safe)进程杀掉(kill -9),不要任何犹豫,然后再用工具将表空间数据读取出来。因为执行delete删除后,实际数据并没被物理清除,只是先打上deleted-mark标签,后续再统一清理,因此还有时间差。
6.执行truncate误清整表。如果没使用共享表空间模式的话,基本别想了,走备份恢复+binlog吧。
7.执行不带where条件的update,或者update错数据。也别费劲了,走备份恢复+binlog吧。

最新文章

  1. 【Win 10应用开发】SplitView控件
  2. PO VO DAO DTO BO TO概念与区别(转)
  3. OpenSuse Caffe CNN库 配置
  4. DrawableLayout
  5. Hibernate 和 快照
  6. 正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码
  7. Unity3d物体模型(实现旋转缩放平移自动旋转)
  8. 日志输出--C#
  9. ajax数据交互(arcgis server)
  10. UIImageView动画制作
  11. ES容易忽视的集群配置
  12. P1829 [国家集训队]Crash的数字表格 / JZPTAB
  13. Mysql锁(翻译)
  14. Python标示符和关键字
  15. Project2016下载安装密钥激活教程破解
  16. C#调用接口注意要点
  17. Hdu1969 Pie 2017-01-17 13:12 33人阅读 评论(0) 收藏
  18. 集合之asList的缺陷
  19. hdu 6301 Distinct Values (双指针,水题)
  20. iframe加载方案及性能

热门文章

  1. 【hdu 4696】Professor Tian
  2. IntelliJ IDEA如何导入maven结构的web工程
  3. 洛谷 P2242 公路维修问题
  4. 《深入理解java虚拟机》学习笔记四/垃圾收集器GC学习/一
  5. 火狐—火狐浏览器中的“HttpWatch”
  6. 将 php 转换/编译为 EXE
  7. 用vue.js的v-for,v-if,computed写一个分页样式
  8. MariaDB 安装 (YUM)
  9. RS-485总线和Modbus通信协议的关系
  10. 洛谷 P2347 砝码称重