Cho*_*er3 13
如果您实际上没有备份,那么我 99% 肯定您不走运。
如果您确实有任何形式的备份,无论多旧,那么您是否通过 log-bin 选项在 MySQL 配置文件 (my.ini) 中打开了二进制日志记录?如果是这样,您可能能够从上次备份后恢复。
糟糕的一周开始方式,对不起。
这个问题比较老了,但没有一个肯定的答案,所以我会添加一个。
在 MySQL 删除一个表后,数据仍然在媒体上一段时间。因此,您可以获取记录并重建表。稍后我将在博客上介绍它,但现在快速草图。
您需要拥有表的结构(CREATE TABLE 语句)。
如果 innodb_file_per_table 为 ON,则删除的表位于磁盘分区上。尽快停止 MySQL 并将其重新挂载为只读。如果 MySQL 位于根分区上(顺便说一句,这不是一个好主意),则拍摄映像或取出磁盘并插入另一台服务器。换句话说,停止所有写入。
如果 innodb_file_per_table 关闭,则停止 MySQL。
然后从https://github.com/twindb/undrop-for-innodb/下载并编译 InnoDB 的 un-drop 工具。查看“[编译 TwinDB 恢复工具包][1]”帖子了解详细信息。
然后使用 stream_parser 解析磁盘分区或 ibdata1(取决于 innodb_file_per_table 设置):
./stream_parser -f /path/to/diskimage_or_ibdata1
Run Code Online (Sandbox Code Playgroud)
然后恢复 InnoDB 字典以知道删除的表在哪个 index_id 中。
然后取表结构并获取记录
./c_parser -f pages-diskimage_or_ibdata1/FIL_PAGE_INDEX/00000<index_id>.page
Run Code Online (Sandbox Code Playgroud)
它会将记录输出到 stdout,并将 LOAD DATA 命令输出到 stderr。[1]:https : //twindb.com/how-to-recover-innodb-dictionary/
关于 Undrop For InnoDB 的 PS 视频教程 - Undrop for InnoDB 概述https://youtu.be/-1LeLhGjAWM
不幸的是,除了吸取有关良好备份计划的必要性的非常宝贵的教训之外,您无能为力。
根据表类型,您也许能够找到一位专家,他可以将数据从光盘上留下的内容重新拼凑在一起,但这种取证分析将非常非常昂贵(因为它需要相对不常见的技能)并且根本无法保证才能真正有用。
| 归档时间: |
|
| 查看次数: |
76707 次 |
| 最近记录: |