在日常使用中有时难免会出现数据被误删除的情况,在这个时候该如何快速、有效地恢复数据呢?在阿里云上恢复数据有多种方式,如果需要帮助可以在云市场联系云顶云。方法如下,例如:
通过阿里云控制台回滚备份好的快照,自定义镜像恢复等方式。
购买多台ECS,实现业务的负载均衡,高可用。
利用对象存储 OSS(Object Storage Service),存储静态网页和海量图片、视频等重要数据。
本文档主要以CentOS7 *** 作系统为例,介绍如何使用开源工具Extundelete快速恢复被误删除掉的数据。
在Linux下,基于开源的数据恢复工具有很多,常见的有debugfs、R-Linux、ext3grep、extundelete等,比较常用的有ext3grep和extundelete,这两个工具的恢复原理基本一样,只是extundelete功能更加强大。
Extundelete是基于linux的开源数据恢复软件。在使用阿里云的云服务器时,如果您不小心误删除数据,并且Linux系统也没有与Windows系统下回收站类似的功能,您可以方便快速安装此工具。
Extundelete能够利用inode信息结合日志去查询该inode所在的block位置,以次来查找和恢复所需的数据,该工具最给力的一点就是支持ext3/ext4双格式分区恢复,基于整个磁盘的恢复功能较为强大。
注意事项
在数据被误删除后,第一时间要做的是卸载被删除数据所在的磁盘或磁盘分区。因为将文件删除后,仅仅是将文件的inode结点中的扇区指针清零,实际文件还存储在磁盘上,如果磁盘以读写模式挂载,这些已删除的文件的数据块就可能被 *** 作系统重新分配出去,在这些数据块被新的数据覆盖后,这些数据就真的丢失了,恢复工具也回力无天。所以,以只读模式挂载磁盘可以尽量降低数据块中数据被覆盖的风险,以提高恢复数据成功的几率。
注:在实际线上恢复过程中,切勿将extundelete安装到您误删的文件所在硬盘,这样会有一定几率将需要恢复的数据彻底覆盖,切记 *** 作前做好快照备份。
打开mysql的bin log功能:对于mysql也是支持增量备份,但要打开mysql的bin log功能。
我们修改mysql的配置文件。linux是/etc/my.cnf,windows是mysql的安装目录/my.ini
我们在[mysqld]下面加上log-bin一行代码,如下面。
[mysqld]
log-bin=mysql-bin
复制代码
加完后重起mysql即可。
某客户更新数据的时候,误删了数据库的内容,因为数据库做了主从,但是没有做备份(备份很重要啊!)幸好开启了bin-log,之后只好把整个日志的记录拿回来本地进行恢复。
之后自己也做了一个简单的测试,对数据进行恢复,具体如下:
1、新建一个表
CREATE TABLE `lynn`.`sn_test` ( `name` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL , `age` INT( 3 ) NOT NULL ) ENGINE = MYISAM
2、插入多条数据
INSERT INTO `lynn`.`sn_test` (`name`, `age`) VALUES ('lynn1', '1')
INSERT INTO `lynn`.`sn_test` (`name`, `age`) VALUES ('lynn2', '2')
INSERT INTO `lynn`.`sn_test` (`name`, `age`) VALUES ('lynn3', '3')
INSERT INTO `lynn`.`sn_test` (`name`, `age`) VALUES ('lynn4', '4')
3、查看数据并删除
mysql>select * from sn_test
+-------+-----+
| name | age |
+---------+---+
| lynn1 | 1 |
| lynn2 | 2 |
| lynn3 | 3 |
| lynn4 | 4 |
+---------+-----+
4 rows in set (0.00 sec)
mysql>delete from sn_test
Query OK, 4 rows affected (0.00 sec)
mysql>select * from sn_test
Empty set (0.00 sec)
4、mysqlbinlog恢复数据
mysqlbinlog mysql-bin.000006 >1.sql
查看1.txt里面数据插入的纪录,把删除之前的数据进行恢复
mysqlbinlog mysql-bin.000006 --start-position=2471 --stop-position=2876 | mysql -uroot -p123
重新登录,查看数据,OK,已经成功恢复了
对于数据库 *** 作,应该注意如下问题:
1、要常备份(全备,增量备份),出了问题可以最快恢复数据;
2、 *** 作数据库前,要把需要 *** 作的数据库或者表dump出来;
3、需要把bin-log打开,就算没有做上面的两步,也可以通过日志恢复数据
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)