4_利用proc目录恢复删除文件

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下面的文件也不再存在
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值