环境模拟:

1.删除掉数据目录下,ib*文件:

[root@jj-svn160_231 data]# rm -rf ib*

2.登录数据库插入数据:[发现数据可以正常插入]

mysql> use test

mysql> insert into a select * from a;

解决方法如下:

1.数据库不能停机

2.查看当前数据库进程号:从下面可以看出mysql的进程号为:20301

[root@jj-svn160_231 test]# ps -ef |grep mysql

root     14473  4261  0 19:27 tty1     00:00:00 ./mysql -uroot -px xxxxxxx

root     19918     1  0 20:14 pts/0    00:00:00 /bin/sh /opt/mysql/bin/mysqld_safe –datadir=/home/mysql/data –pid-file=/home/mysql/data/jj-   svn160_231.dacn.org.pid

mysql    20301 19918  0 20:14 pts/0    00:00:00 /opt/mysql/bin/mysqld –basedir=/opt/mysql –datadir=/home/mysql/data –plugin-dir=/opt/mysql/lib/plugin –user=mysql –log-error=/var/log/mysqld.log –pid-file=/home/mysql/data/jj-svn160_231.dacn.org.pid –socket=/tmp/mysql.sock –port=3306

root     25443 14404  0 21:27 pts/0    00:00:00 ./mysql -uroot -px xxxxxxx

root     25624 14450  0 21:29 pts/1    00:00:00 grep mysql

3.从内存中查看当前ibdatta和ib_logfile文件信息(看到这里我们放心多了,文件还在,只是被标记为删除状态)

[root@jj-svn160_231 test]# ls -la /proc/20301/fd/ |grep -e ibdata -e ib_

lrwx—— 1 root  root  64 Mar  6 21:30 10 -> /home/mysql/data/ib_logfile0 (deleted)

lrwx—— 1 root  root  64 Mar  6 21:30 11 -> /home/mysql/data/ib_logfile1 (deleted)

lrwx—— 1 root  root  64 Mar  6 21:30 4 -> /home/mysql/data/ibdata1 (deleted)

lrwx—— 1 root  root  64 Mar  6 21:30 9 -> /home/mysql/data/ibdata2 (deleted)

4.此时,直接将内存信息复制到数据目录是不行的,会造成空间损坏,因此我们应该采取加全局读锁操作,讲脏页全部刷入磁盘

mysql> flush tables with read lock;

5.查看当前innodb引擎的状态:[保证log sequence number的值和last checkpoint 值相等]

mysql> show  engine innodb  status\G;

LOG

Log sequence number 1838299

Log flushed up to   1838299

Last checkpoint at  1838299

注:有时脏页比较多,可以设置全局参数,加快速度:mysql> set global innodb_max_dirty_pages_pct=0;

保证一些后台线程完成它们的工作,如.ibuf=1

————————————-

INSERT BUFFER AND ADAPTIVE HASH INDEX

————————————-

Ibuf: size 1, free list len 0, seg size 2, 0 merges

purge thread 应该purge了全部的transcations:

————

TRANSACTIONS

————

Trx id counter 2B02

Purge done for trx’s n:o < 2503 undo n:o < 0

History list length 39

确保innodb不再进行写操作:

——–

FILE I/O

——–

I/O thread 0 state: waiting for completed aio requests (insert buffer thread)

I/O thread 1 state: waiting for completed aio requests (log thread)

I/O thread 2 state: waiting for completed aio requests (read thread)

I/O thread 3 state: waiting for completed aio requests (read thread)

I/O thread 4 state: waiting for completed aio requests (read thread)

I/O thread 5 state: waiting for completed aio requests (read thread)

I/O thread 6 state: waiting for completed aio requests (write thread)

I/O thread 7 state: waiting for completed aio requests (write thread)

I/O thread 8 state: waiting for completed aio requests (write thread)

I/O thread 9 state: waiting for completed aio requests (write thread)

Pending normal aio reads: 0 [0, 0, 0, 0] , aio writes: 0 [0, 0, 0, 0] ,

ibuf aio reads: 0, log i/o’s: 0, sync i/o’s: 0

Pending flushes (fsync) log: 0; buffer pool: 0

239 OS file reads, 15 OS file writes, 13 OS fsyncs

0.00 reads/s, 0 avg bytes/read, 0.00 writes/s, 0.00 fsyncs/s

6.以上数值如果都正常的话,则可以把内存的数据复制到数据目录,并修改数据的权限

[root@jj-svn160_231 test]# cp /proc/20301/fd/10 /home/mysql/data/ib_logfile0

[root@jj-svn160_231 test]# cp /proc/20301/fd/11 /home/mysql/data/ib_logfile1

[root@jj-svn160_231 test]# cp /proc/20301/fd/4 /home/mysql/data/ibdata1

[root@jj-svn160_231 test]# cp /proc/20301/fd/9 /home/mysql/data/ibdata2

[root@jj-svn160_231 data]# chown mysql. ib*

7.释放全局读锁,并重启数据库,验证数据:

mysql> unlock tables;

[root@jj-svn160_231 bin]# /etc/init.d/mysqld restart

至此,ib* 相关文件就已经全部恢复完成

Author: Michael

mysql 误删除ibdata1,mysql误删除ibdata1之后的恢复方法相关推荐

  1. linux 误删除mysql表能恢复吗,Linux中误删除数据文件和归档日志的恢复方法

    误删除前,归档日志2个,用户数据4480064条 复制代码 代码如下: [oracle@station90 datafile]$ sqlplus /nolog SQL> conn hr/hr C ...

  2. mysql ibdata1 删除_mysql 误删除ibdata1之后的恢复方法

    mysql 误删除ibdata1之后如何恢复 如果误删除了在线服务器中mysql innodb相关的数据文件ibdata1以及日志文件 ib_logfile*, 应该怎样恢复呢? 这时候应该一身冷汗了 ...

  3. mysql 误删除ibdata1,MySQL 误删除ibdata1之后的恢复方法

    这篇文章主要为大家详细介绍了MySQL 误删除ibdata1之后的恢复方法,具有一定的参考价值,可以用来参考一下. 感兴趣的小伙伴,下面一起跟随512笔记的小编小韵来看看吧! mysql 误删除ibd ...

  4. mysql防止误删除_mysql防止误删除的方法

    为了防止在更新和删除的时候,没有写where条件而对全部数据进行操作,mysql提供了一个参数来防止此情况的发生 需要在启动mysql的时候,增加参数--i-am-a-dummy含义是我是新手,或者使 ...

  5. mysql库的user表误删除或mysql的管理员密码丢失的解决方法

    mysql库的user表误删除或mysql的管理员密码丢失的解决方法 参考文章: (1)mysql库的user表误删除或mysql的管理员密码丢失的解决方法 (2)https://www.cnblog ...

  6. mysql导入ibdata文件_MySQL ibdata1文件迁移

    目的:主机系统/var目录快满了,经查询最大的文件是mysql的ibdata1文件,有17G大小,故需要迁移这个文件到其他目录下,以释放/var目录空间. 1.先备份下数据库是个好习惯 # mysql ...

  7. mysql ibdata1 压缩_MySQL ibdata1文件太大的解决办法

    在MySQL数据库中,如果不指定innodb_file_per_table=1参数单独保存每个表的数据,MySQL的数据都会存放在ibdata1文件里,时间久了这个文件就会变的非常大. 下面是参考网上 ...

  8. linux 误删除mysql表能恢复吗_linux rm误删除数据库文件的恢复方法

    1.首先测试rm 误删除数据库文件 [oracle@primary dbwdn]$ ll total 2153164 -rw-r----- 1 oracle dba 8536064 Nov 27 21 ...

  9. 删除 mysql ibd文件_误删除MySQL数据库表的ibd文件怎么办

    很多年前,学习oracle10g的技术时,看过盖国强老师写的一篇文章,在linux系统中,oracle数据库存活的时候,用系统命令rm删除一个数据文件,这个时候找到删除文件的fd文件句柄,就可以将删除 ...

最新文章

  1. 浙江大学杭州国际科创中心招聘优秀青年人才(机器学习及大数据)
  2. Java中Filter的理解
  3. 有趣的物理照片,让你瞬间爱上物理!
  4. 鸿蒙手机启动器apk下载,澪Pro启动器本体下载最新版
  5. 不恢复余数除法原理_青岛版二年级下册数学寒假预习:有余数的除法自主练习答案及讲解...
  6. 设计模式笔记十一:外观模式
  7. 为什么要使用MQ消息中间件?
  8. 仿墨迹天气小程序源码(袋鼠天气)
  9. 【多目标优化求解】基于matlab粒子群算法求解配电网抢修优化问题【含Matlab源码 777期】
  10. 【路径规划】基于matlab人工势场法机器人自动避障【含Matlab源码 620期】
  11. GAN生成的人脸数据集
  12. dk 7 linux x64.rpm,linux x64 Java/JDK 11下载 jdk-11.0.7_linux-x64_bin.rpm官方镜像版
  13. 嵌入式 Linux 启动时间优化
  14. week15-字符串
  15. 迅睿cms模板,迅睿cms模板建站,迅睿模板主题开发
  16. 一文带你了解身份证实名认证类api接口
  17. Sails.js简介
  18. 解决微信小程序RangeError: WebAssembly.instantiate(): Out of memory: wasm memory内存不足问题
  19. LLDB breakpoint syntax
  20. 小红书-内卖秒杀项目总结

热门文章

  1. C#中使用正则表达式匹配字符串
  2. 朵唯S2l 驱动安装 刷机 Imei号找回方案(应该也适合同类国产机)
  3. Linux下普通用户执行关机、重启指令
  4. IDEA热部署JRebel插件激活教程
  5. 想写诊断meta分析,那你得了解QUADAS-2!
  6. 控制台打印带颜色的字符
  7. 元宇宙大火,高通实力领跑,推动XR成为下一代计算平台
  8. leaflet加载腾讯地图 (路网、影像、地形) 示例教程034
  9. 21世纪的末位淘汰制度 和 古罗马的 十一抽杀律 呼应
  10. 北京科技大学计算机系老师,北京科技大学第六届“研师亦友”获奖导师风采展示——孙昌爱教授...