linux系统利用proc目录恢复删除文件,linuxproc
linux系统利用proc目录恢复删除文件,linuxproc
ref: http://blog.csdn.net/jesseyoung/article/details/42236615
修改innodb共享表空间转换为独立的表空间
使用mysql模拟演示在linux下使用/proc目录来恢复删除数据
具体的操作如下,为了便于演示,这里将mysql的共享表空间设置为独立表空间
; 保证此变量的值为on mysql> show variables like '%per_table'; +-----------------------+-------+ | Variable_name | Value | +-----------------------+-------+ | innodb_file_per_table | ON | +-----------------------+-------+ 1 row in set (0.00 sec) ; 创建表 CREATE TABLE `t` ( `id` INT(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8; ; 插入数据 INSERT INTO t VALUES (NULL); ; 查看数据条数 mysql> select count(*) 'sum' from t; +-----+ | sum | +-----+ | 8 | +-----+ 1 row in set (0.00 sec) ; 删除数据 [root@MC-M mongo]# pwd /var/lib/mysql/mongo [root@MC-M mongo]# ls db.opt t.frm t.ibd [root@MC-M mongo]# rm t.ibd rm: remove regular file `t.ibd'? y [root@MC-M mongo]# ls db.opt t.frm # 从这里也可以看出数据并没有删除 mysql> INSERT INTO t VALUES (NULL); Query OK, 1 row affected (0.01 sec) mysql> mysql> INSERT INTO t VALUES (NULL); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO t VALUES (NULL); Query OK, 1 row affected (0.00 sec) mysql> select count(*) 'sum' from t; +-----+ | sum | +-----+ | 11 | +-----+ 1 row in set (0.00 sec) # 查看mysql进程号 # 可以从lsof中看出该文件对应的文件描述符是32 [root@MC-M fd]# lsof | grep t.ibd mysqld 19760 mysql 32uW REG 8,3 98304 2450 /var/lib/mysql/mongo/t.ibd (deleted) [root@MC-M fd]# ll /proc/$(pidof mysqld)/fd | grep t.ibd lrwx------ 1 root root 64 Jan 9 19:28 32 -> /var/lib/mysql/mongo/t.ibd (deleted) # 在恢复前,如有必要需要先锁表 lock table t read; # 如果恢复完成后,执行下面命令解锁 unlock tables; # 恢复文件 [root@MC-M fd]# cp /proc/$(pidof mysqld)/fd/32 /var/lib/mysql/mongo/t.ibd [root@MC-M fd]# chown mysql:mysql !$ chown mysql:mysql /var/lib/mysql/mongo/t.ibd [root@MC-M fd]# ls -l /var/lib/mysql/mongo/ total 112 -rw-rw---- 1 mysql mysql 61 Oct 19 16:23 db.opt -rw-rw---- 1 mysql mysql 8556 Jan 9 19:22 t.frm -rw-r----- 1 mysql mysql 98304 Jan 9 19:37 t.ibd # 可以通过重启服务来验证数据有没有丢失,因为重启之后pid肯定会发生变化,所以proc下面的文件也不再存在。
评论暂时关闭