金海境科技
24年专注数据恢复技术研发
数据中心服务器数据丢失急救服务
7*24小时服务热线:
4001020059

【服务器数据恢复】数据中心ECS云服务器MySQL数据库表误删数据恢复案例

发表时间:2020-02-20 14:43作者:金海境科技

blog1-1.png

一:客户信息

上海某时装集团

二:案例描述

客户向我们反馈其在某云服务商上的ECS云服务器,在执行数据库版本更新测试时,运维人员误操作把本来应该在测试库执行的sql脚本执行在生产库上,导致生产库上的8个表的数据被清空,还有4个表中的少量数据被删除。ECS云服务器基于Linux操作系统和MySQL数据库。InnoDB为MySQL数据库的默认存储引擎,MySQL数据库版本为5.6。

三:解决方案

1. 案例评估

ECS云服务器特点:

1、无需硬件设备,只需按照配置支付相应的费用,云服务器服务商不仅提供云服务器环境,同时还提供技术咨询服务。

2、云服务器可以更充分的利用资源,无需考虑老旧设备的淘汰和折旧,节约购买新设备的成本。

3、云服务器服务商有专业技术人员对服务器进行维护,节约设备运行维护成本和搭建成本等,可以让用户方将更多资源投入到核心业务中。

MySQL相关误删数据主要有以下几种可能:

1、使用delete语句误删数据行;

2、使用drop table或truncate table语句误删数据表;

3、使用drop database误删数据库;

4、使用rm误删整个MySQL实例。

2. 恢复方案

1、由于ECS服务器内有其他业务在运行,为保证被truncate表底层数据不被破坏,在进行数据恢复之前先对MySQL的data目录所在分区进行镜像备份。

2、由于需要恢复的表内无大字段类型值,这些表都是MyISAM存储引擎表。扫描数据段并下载所必需的数据库文件碎片。由于恢复InnoDB存储引擎表的数据必须依赖表结构信息,MySQL的表结构信息存储于对应表名的.frm文件内。本案例中.frm文件完好,可直接使用。

3、读取数据段内系统表信息,获取需要恢复的表在系统表内的注册信息。

4、在下载的数据段文件内提取对应于各表的数据页,通过解析对应表的.frm文件获取到该表的表结构信息。通过表结构信息获取到底层数据分配规则。金海境科技数据恢复工程师按照获取到的规则拆分数据段内二进制数据,并对不同类型进行字符展示转换(各类整型、浮点型、时间型等),完成数据段到sql语句的转换。

5、恢复被delete数据的表,流程跟truncate表的恢复一样,不同点在于解析数据时需要提取被标注为“delete”的记录。

6、根据解析出的表结构信息在恢复环境中的MySQL实例内创建表,并将恢复出的数据导入。

7、由于直接从底层抓取出的记录可能存在主键不**(引擎在存储时产生的临时记录)和记录重复(缓冲段)以及乱码(扫描数据段时出现特征值匹配成功但不属于该表的数据段)等情况,提取出的记录可能存在异常,需要人工处理。

8、数据恢复完成后,客户远程对数据进行验证。经过验证,truncate表和delete记录的表数据文件完整恢复。

四:案例总结

在MySQL中,DROP、DELETE和TRUNCATE是用于删除表中数据或整个表的命令。它们的主要区别可以总结如下:

1.DROP命令会删除整个表及其数据,不可恢复;

2.DELETE命令可以根据条件选择性地删除表中的数据,支持事务回滚;3.TRUNCATE命令删除整个表的数据,效率较高,但不支持事务回滚。当数据发生丢失时,金海境科技研发团队深入研究各种服务器和系统设计思路,认真对比故障类别,攻克疑难恢复案例,总结成功恢复经验,拥有成功修复服务器数据库,虚拟化平台,分布式存储等数据中心相关的上万个疑难案例。