这是 DBRecover for MySQL v2605 官方 GUI 用户手册。DBRecover for MySQL 是免费软件,可自由使用,无需购买许可证。请尽量在复制出的数据库文件上操作。 DBRECOVER for MySQL
本手册说明如何使用 DBRecover for MySQL 图形界面,从离线 MySQL 文件中恢复表结构和数据行。本文面向需要执行数据恢复的操作人员,而不是面向扩展本工具的开发人员。
截图展示主要 GUI 操作以及每一步完成后的预期结果。请尽量在复制出的文件上操作,不要直接修改原始介质。
开始之前
请根据恢复场景准备对应文件:
- MySQL 8.x 单表恢复:目标表的
.ibd文件。 - MySQL 8.x datadir 恢复:包含 schema 目录和
mysql.ibd的 datadir。 - MySQL 5.x 或 MariaDB 单表恢复:目标表
.ibd文件以及匹配的.frm文件。 - MySQL 5.x 或 MariaDB datadir 恢复:
ibdata1、schema 目录、.frm文件以及表数据文件。 - 已删除表恢复:
mysql.ibd、ibdata1或 DD.page文件;如果能提供原始 datadir 或雕刻出的 page 目录,导出效果会更好。 - 磁盘镜像扫描:raw 磁盘镜像、文件系统镜像或复制出的块设备镜像。
在 dbrecoverj 目录下启动 GUI:
java -jar target/dbrecoverj-2605-gui.jar主窗口包含四个工作区:
- 顶部菜单和工具栏,用于打开文件、运行恢复工具、导出结果。
- 左侧 Navigator,用于查看项目、文件、schema 和 table。
- 中间内容区,用于查看
Data、Columns、DDL、SDI和Info。 - 底部 Log 面板,用于查看进度、警告和导出路径。

场景 1:选择正确的恢复流程
当你不确定当前文件应该走哪条恢复路径时,先使用 Recovery Wizard。
操作流程
- 打开 GUI。
- 选择
Tools > Recovery Wizard...。 - 在第 1 步选择与输入文件匹配的恢复模式。

- 点击
Next。 - 在第 2 步选择 MySQL 版本系列和 page size。
- 除非明确知道源实例使用了其他 InnoDB page size,否则保持
16384。

- 点击
Next。 - 在第 3 步添加当前模式所需的文件或目录。
- 点击
Start。 - 在 Log 面板查看扫描结果和警告。
- 当 Navigator 中出现恢复出的 schema 或 table 后,继续按下面对应场景进行预览和导出。

场景 2:恢复单个 MySQL 8.x .ibd 表
当你有一个独立的 MySQL 8.x .ibd 文件时使用本场景。MySQL 8.x 表通常带有 SDI 元数据,因此 DBRecover 通常可以在没有 .frm 文件的情况下识别表结构。
操作流程
- 选择
File > Open File...,或点击工具栏中的Open File。 - 选择
.ibd文件。 - 文件会出现在
Navigator > IBD下。 - 选择该
.ibd节点。 - 确认
SDI标签页包含元数据。如果文件下没有出现 table,请检查 Log 面板中的 page size 或 SDI 警告。

- 在 Navigator 中展开
.ibd节点。 - 选择 table 节点。
- 打开
Data标签页。 - 先把
Rows设置为较小的预览值,例如1000。 - 只有在需要查看已删除记录时才启用
Include deleted。 - 修改预览选项后点击
Reload。

- 打开
DDL标签页,检查生成的CREATE TABLE语句。 - 如果表名、列或索引明显不对,请停止操作并确认
.ibd文件是否来自正确的源表。

- 打开
Columns标签页。 - 导出前检查列名、类型、可空性、默认值、生成列和索引。

- 打开
Info标签页。 - 检查文件大小、page 数量、page 类型、SDI 状态、row format、charset 和检测到的表特性。

导出恢复出的表
- 在 Navigator 中选择 table 节点。
- 导出 DDL 时,点击工具栏
Export DDL,或右键 table 选择Export DDL...。 - 导出 SQL 行数据时,点击
Export Data或选择Export Data...。 - 导出 CSV 时,点击
Export CSV或选择Export CSV...。

- 按提示选择目标文件。
- 等待 Log 面板显示绿色成功信息。
- 使用导出文件前,请先检查行数、文本编码和代表性记录。
场景 3:从 MySQL 8.x datadir 批量恢复表
当你有 MySQL 8.x datadir,并希望一次恢复多张表时,使用 Dictionary Mode。
操作流程
- 选择
Tools > MySQL8 Dictionary Mode...。 - 在对话框中确认 datadir 路径。
- 点击
Scan。 - 等待表列表填充完成。
- 检查识别出的 schema 名、table 名和警告。
- 点击
Export All DDL...导出表结构。 - 点击
Export All Data...导出 SQL 数据文件。 - 点击
Export All CSV...导出 CSV 文件。 - 如果需要按 schema 生成可导入 dump,点击
Export Schema Dump...。 - 每次导出时选择输出目录。
- 每次导出后检查 Log 面板和输出文件。

推荐检查
- 先导出 DDL。
- 抽查几张大表和小表。
- 对大型 datadir,先导出一小批 CSV 进行验证。
- 如果需要先限制输出规模,在
Preferences中设置行数限制。
场景 4:使用 .frm 恢复单个 MySQL 5.x 或 MariaDB .ibd 表
当源表来自 MySQL 5.x 或 MariaDB 时使用本场景。这类表没有 MySQL 8 SDI 元数据,因此 DBRecover 需要匹配的 .frm 文件,或兼容的 CREATE TABLE 语句。
先检查 .frm 文件
- 选择
File > Open .frm File (MySQL 5.x)...。 - 选择属于目标表的
.frm文件。 - 检查生成的 DDL。
- 打开 FRM 结果对话框中的
Columns标签页,确认字段列表。 - 检查结构后关闭对话框。

将 .frm 与 .ibd 关联
- 选择
File > Open File...。 - 选择 MySQL 5.x 或 MariaDB
.ibd文件。 - 在 Navigator 中右键
.ibd节点。 - 选择
Associate .frm File (MySQL 5.x)...。 - 选择匹配的
.frm文件。 - 展开
.ibd节点。 - 选择由
.frm创建出的 table 节点。 - 与 MySQL 8 单表场景一样,依次查看
DDL、Columns、Data和Info。

导出表
- 选择 table 节点。
- 先导出 DDL。
- 在
Data标签页用较小行数预览数据。 - 预览正确后导出 SQL 或 CSV。
- 如果值错位到错误列,请确认
.frm文件来自完全相同的表定义。
场景 5:恢复 MySQL 5.x 或 MariaDB datadir
当你拥有包含 ibdata1、.frm 和表数据文件的 datadir 时使用本流程。
操作流程
- 选择
Tools > MariaDB/MySQL5 Datadir Recovery...。 - 选择源 datadir。
- 如果已经从磁盘镜像雕刻出
.page文件,选择 page set 根目录作为搜索根。 - 点击
Analyze。 - 等待表列表和状态信息生成。
- 检查表列表和警告。
- 点击
Export DDL...、Export Data...、Export CSV...或Export Schema Dump...。 - 选择输出目录。
- 在 Log 面板查看被跳过的表或缺失
.frm的提示。

推荐检查
- 确认
ibdata1与.frm、.ibd文件来自同一个 datadir。 - 先导出 DDL,确认表名和列定义。
- 用 CSV 快速抽查数据。
- 如果希望每个 schema 得到一个可导入输出,使用 schema dump。
场景 6:恢复已删除表或已删除数据库
当表被 drop 后,但元数据仍可能存在于 mysql.ibd、ibdata1 或雕刻出的数据字典 page 中时,使用 Drop Recovery。
操作流程
- 选择
Tools > Drop Recovery...。 - 选择字典来源:
- MySQL 8:
mysql.ibd或恢复出的 DD.page文件目录。 - MySQL 5.x/MariaDB:
ibdata1。
- 如果可用,选择 datadir。这有助于 DBRecover 定位表
.ibd文件并导出数据。 - 当原始表文件缺失时,选择雕刻出的 page root。
- 点击
Analyze。 - 检查恢复出的 schema 和已删除表。
- 选择一张表。
- 先导出 DDL。
- 如果表 page 可用,再导出 SQL 或 CSV。
- 如果需要所有检测到的已删除表,使用批量导出。

推荐检查
- 将已删除表恢复视为 best effort。
- 如果原始 datadir 仍可用,优先使用原始 datadir。
- 只有在原始表文件缺失或损坏时才使用雕刻 page。
- 查看 Log 面板,确认哪些表只有元数据、没有可用数据 page。
场景 7:从磁盘镜像雕刻 InnoDB page
当你没有干净的 .ibd 文件,但有 raw 磁盘镜像或文件系统镜像时,使用 Disk Image Scan。
操作流程
- 选择
Tools > Disk Image Scan...。 - 选择磁盘镜像文件。
- 选择一个空输出目录。
- 确认 page size。除非源实例使用了其他 InnoDB page size,否则使用
16384。 - 确认 scan step。更小的 step 能找到更多 page,但耗时更长。
- 首次扫描建议保留 leaf-only 扫描,以获得更快结果。
- 点击
Scan。 - 等待扫描完成。
- 点击
Dictionary Recovery...继续处理恢复出的 page set,或打开Tools > Drop Recovery...并使用扫描输出作为 page root。

推荐检查
- 输出目录应有足够可用空间。
- 原始磁盘镜像保持只读。
- 先执行快速 leaf-page 扫描。
- 如果重要表缺失,再用更小 step 重新扫描。
场景 8:直接打开目录
当你希望 Navigator 直接列出某个目录中的 .ibd、.MYD 和 .page 文件,而不启动完整恢复向导时使用本流程。
操作流程
- 选择
File > Open Directory...,或点击工具栏Open Directory。 - 选择要扫描的文件夹。
- 该目录会出现在 Navigator 中。
- 展开目录节点。
- 选择 table 或 file 节点。
- 根据可用情况查看
Data、Columns、DDL、SDI和Info。 - 对没有自动识别结构的 MySQL 5.x 文件,右键文件并选择
Associate .frm File (MySQL 5.x)...或Associate DDL (CREATE TABLE)...。 - 预览和 DDL 检查正确后,从所选 table 节点导出。

场景 9:配置导出、预览和语言偏好
在大型导出前、需要稳定 SQL 输出时,或需要切换 GUI 语言时使用 Preferences。
操作流程
- 选择
Tools > Preferences...。 - 在
Export分类中设置默认导出行数限制。 - 如果希望 SQL 输出中包含列名,启用完整 INSERT 语句。
- 只有目标导入流程要求时才启用
REPLACE输出。 - 只有明确要恢复已删除记录时才启用已删除行导出。
- 在
Data View分类中设置默认预览行数。 - 在
Language分类中选择System language、English、Chinese (Simplified)、Japanese或Spanish。 - 点击
Apply或OK。如果已打开窗口仍显示旧语言,请重新打开窗口或重启应用。

场景 10:验证并使用导出文件
在导入生产环境前,务必先验证导出结果。
操作流程
- 打开导出的 DDL。
- 确认 schema 名、table 名、engine、charset、列和索引。
- 打开导出的 SQL 或 CSV。
- 检查表头、行数、NULL 值、二进制值、日期和文本编码。
- 先导入临时数据库。
- 对比行数和代表性记录。
- 如果第一次导出没有包含目标记录,可调整行数限制或启用
Include deleted后重新导出。
故障排查
| 现象 | 检查项 |
|---|---|
.ibd 文件下没有出现 table | 确认文件是否为带 SDI 的 MySQL 8 文件;MySQL 5.x 需要关联匹配 .frm 或 DDL。 |
| Data 标签页有列但没有行 | 检查 page size、表结构,以及表文件中是否确实包含 clustered index pages。 |
| GUI 中的文本显示异常 | 检查 Columns 和 Info 中的 charset/collation,然后用支持 UTF-8 的编辑器验证 CSV 导出。 |
| 导出文件过大 | 在 Preferences 中设置行数限制后重新导出。 |
| 找到已删除表 DDL 但没有数据 | 提供原始 datadir 或雕刻出的 page root,帮助 DBRecover 定位表 page。 |
| 磁盘扫描找到的 page 很少 | 确认 page size 和 scan step;如果镜像不是 page 对齐,可尝试更小 step。 |
截图索引
01-main-window-welcome.png:主窗口。02-open-ibd-sdi.png:打开带 SDI 的 MySQL 8.ibd文件。03-table-data.png:表数据预览。04-table-ddl.png:生成的表 DDL。05-table-columns.png:列列表。06-recovery-wizard-step1.png:Recovery Wizard 模式选择。07-recovery-wizard-step2.png:Recovery Wizard 版本和 page size。08-recovery-wizard-step3.png:Recovery Wizard 数据源选择。09-preferences.png:Preferences 对话框。10-disk-image-scan.png:Disk Image Scan 对话框。11-drop-recovery.png:Drop Recovery 对话框。12-mysql8-dictionary-mode.png:MySQL 8 Dictionary Mode 对话框。13-mysql5-datadir-recovery.png:MySQL 5.x/MariaDB Datadir Recovery 对话框。14-frm-parse-result.png:直接解析.frm的结果。15-mysql5-frm-ddl.png:由.frm生成的 MySQL 5.x DDL。16-table-info.png:文件和表信息标签页。17-open-directory.png:直接打开目录的结果。18-table-context-menu.png:包含预览和导出操作的 table 右键菜单。