ITPub博客

首页 > 数据库 > MySQL > 服务器数据恢复-误操作导致mysql数据库数据丢失的数据恢复案例

服务器数据恢复-误操作导致mysql数据库数据丢失的数据恢复案例

原创 MySQL 作者:北亚数据恢复 时间:2023-12-27 14:32:45 0 删除 编辑

云服务器数据恢复环境:

华为ECS云服务器,linux操作系统,mysql数据库(innodb引擎)。作为网站服务器使用。


云服务器故障:

在执行mysql数据库版本更新测试时,误将本应该在测试库上执行的sql脚本执行在生产库上了,生产库上的部分表被truncate,部分表内有少量数据被delete。

需要恢复被truncate的表以及被少量数据被delete的表。


云服务器数据恢复过程:

1、ECS云服务器内有其他业务仍在运行,先对mysql数据库的data目录所在分区进行备份。

2、由于需要恢复的表内不存在大字段类型值,也没有myisam引擎的表需要恢复,所以只需要扫描数据段并下载恢复数据所必需的数据库段碎片即可。innodb引擎的mysql数据库表的数据恢复必须依赖表结构信息,mysql的表结构信息存储于对应表名的.frm文件内。本案例mysql数据库中的.frm文件完好,直接下载需要恢复的表对应的.frm文件。

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

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

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

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

7、由于直接从底层抓取出的记录可能存在主键重复(引擎在存储时产生的临时记录)、记录重复(缓冲段)以及乱码(扫描数据段时出现特征值匹配成功但不属于该表的数据段)等情况。北亚企安数据恢复工程师人工处理存在异常的提取记录,直到所有数据都没有问题。

8、交由用户方工程师验证数据。经过用户方的多方验证,确认被truncate的表完整恢复,被delete记录的表中数据完整恢复。本次ECS云服务器数据恢复工作完成。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31380569/viewspace-3001787/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
从事服务器数据恢复、磁盘阵列数据恢(DEll、HP、IBM、华为、NetApp等),虚拟化数据恢复(VSAN、VMware、Kvm等),数据库数据恢复(Oracle、Sql Server、MySql、Mongodb等),小型机数据恢复等方面的。24h数据救援13439392933

注册时间:2016-08-02

  • 博文量
    1127
  • 访问量
    876181