mysql误删除InnoDB数据文件恢复

错误重现:

使用rm -f ib*删除数据文件和重做日志文件。

这时mysql进程还存在,mysql还能正常使用。

文件恢复:

1:查找mysqld的进程号。

# netstat -ntpl | grep mysqld
 tcp    0  0 0.0.0.0:3306   0.0.0.0:*      LISTEN   12147/mysqld

2:利用进程号查找如下文件。

# ll /proc/12147/fd | egrep ‘ib_|ibdata‘
  lrwx------ 1 root root 64 Jun 18 09:23 10 -> /mydata/ib_logfile1 (deleted)
  lrwx------ 1 root root 64 Jun 18 09:23 4 -> /mydata/ibdata1 (deleted)
  lrwx------ 1 root root 64 Jun 18 09:23 9 -> /mydata/ib_logfile0 (deleted)

3:添加锁,使数据库没有写入操作。

sql> flush tables with read lock;

4:输入以下命令,让脏页尽快刷入到磁盘。

sql> set global innodb_max_dirty_pages_pct=0;

5:查看innodb状态信息,确认脏页已经刷入磁盘,比对如下数值:

6:确认完后,就可以进行恢复操作了,把之前记录的删除文件复制到原来目录下。

# cd /proc/12147/fd 
# cp 10 /mydata/ib_logfile1
# cp 4 /mydata/ibdata1
# cp 9 /mydata/ib_logfile0

7:重启mysqld服务既可。

时间: 2024-12-29 07:24:54

mysql误删除InnoDB数据文件恢复的相关文章

模拟误删除InnoDB ibdata数据文件恢复

注意:假如误删除 ibdata文件 ,此时千万别把mysqld进程杀死,否则没法挽救. 1.模拟删除ibdata数据文件和重做日志文件: [[email protected] data]# lltotal 421944-rw-r-----. 1 mysql mysql        56 Sep 12 20:57 auto.cnf-rw-r-----. 1 mysql mysql     11937 Sep 12 23:37 error.log-rw-r-----. 1 mysql mysql 

MySql通过二进制日志文件恢复数据

在<百度.阿里.腾讯如何承载PB级别大数据>的视频中了解到,大型网站的数据库每天都会定时的进行数据备份份.如果设置每天的0点进行数据备份,在两个数据备份周期期间数据库出现宕机情况,0点到宕机这个时间段的数据如何备份呢?在MySql中是通过数据库的二进制日志文件进行数据恢复的. MySql的二进制日志文件默认是关闭的,需要我们在MySql根目录下的my.ini文件中设置为开启状态.设置方式为在[mysqld]节点下,添加log-bin=mysql  binlog-do-db=spring,mys

linux下恢复误删除的数据文件

在linux系统运维中,经常会遇到各种因操作不慎.操作失误等行为导致数据丢失的情况,此时我们可以利用extundelete进行数据的恢复.一. 实验前的准备 新建一个磁盘 在虚拟机设置窗口中,找到"硬盘",点击"添加",在打开的"添加硬件向导"窗口中,选中"硬盘",点击下一步,接下来我们直接默认选择"下一步",直到最后选择"完成",2.重启系统,我们可以用 init 6 这条命令重启系统

mysql 误删除ibdata1之后如何恢复

如果误删除了在线服务器中mysql innodb相关的数据文件ibdata1以及日志文件 ib_logfile*,应该怎样恢复呢? 这时候应该一身冷汗了吧?==================================先抽根烟,冷静一下.==================================再观察一下网站,发现一切都很正常,数据的读取与写入操作都完全正常.这是怎么个情况? 其实,mysqld在运行状态中,会保持这些文件为打开状态,即使把它们删除了,它们仍旧存在于文件系统中,m

mysql初识之数据文件及其他文件

在mysql中数据文件存放于在my.cnf中datadir指定的路径,使用的表引擎不同产生的文件格式.表文件个数也会有所差异.mysql的表引擎有多种,表的扩展名也不一样,如innodb用“ .ibd”,archive用“.arc ”,csv用“.csv”等. myisam表引擎 myisam表会产生三个文件:MYI.MYD.frm文件 frm文件: 主要存放表的元数据(meta),包括表结构定义信息等.不论是哪个表引擎都会有一个frm文件,存放在数据库的数据目录下. .MYI文件(索引文件):

Mysql主从复制(数据故障恢复恢复)---论坛那些事儿

Mysql主从同步搭建起来了,终于不用担心数据丢失了,但是这样的数据真的万无一失不会出错么,当然不是,就比如如果在主从同步之前Master上本就有一个库bbs存在,而Slave没有这个库,库bbs被包含在建立的同步之中,当Master上对bbs修改数据时,Slave上会因找不到bbs这个库而报错,这时建立的同步就会被破坏,导致同步停止.还有就是当Master数据库服务器突然因故障当机了,我们又如何让数据恢复使论坛正常运行呢?这里我们就解决这两个问题. 一.Master与Slave服务器因同步前数

linux下误删数据文件恢复

linux下文件被删除可以用很多工具进行恢复,例如undelete(适合ext2,ext3).giis(不能恢复安装giis之前的文件).ext3grep(仅限ext3).R-linux(支持ext3,但是需要操作系统是32位的).还有testdisk等等就不一一介绍了.需要注意的是,我们误删文件后,最好保持现场. 下面不用工具来恢复误删的数据文件: [email protected]>select * from zbdba; select * from zbdba * ERROR at lin

mysql 数据库通过拷贝文件恢复方法

MyIASM可以直接拷贝过去,就可以完成备份的还原 搭建与原数据库相同的的数据库环境(mysql版本一致) 将data文件夹下的文件复制到搭建的新数据库data文件夹下 删除数据库下的.ibd(数据文件)和.frm(结构文件,要的就是这个), db.opt不要删除 执行建表sql,新建一样的表结构(新的要还原的数据库) 执行导出表空间sql:ALTER TABLE table_name DISCARD TABLESPACE; 把所有表空间导出,table_name换成需要导出的表,执行后数据库会

只有数据文件恢复数据库

数据库盘阵挂了,数据库软件.数据库日志文件.控制文件以及备份都放在挂的这个磁盘,到最后什么文件都没有,只剩下数据文件!! 恢复步骤:这是oracle10G+linux5 的环境,其他版本步骤一样,区别就在参数文件相关参数而已! 1.安装数据库软件:这个就不说了...安装的时候最好保持所在的目录.ORACLE_SID, 以及数据库名和原来数据库一样!这样避免很多麻烦 2.创建一个pfile,建一个空实例 参数文件如下:注意创建参数文件中的相关目录 [[email protected] dbs]$