MySQL 5.7 通过frm和ibd文件恢复数据

MySQL 5.7 通过解析frm和ibd文件恢复数据

.frm文件存储表结构
.ibd文件存储数据
以恢复表IP_PATENT_APPLICANT_LIST为例, 有待恢复表文件IP_PATENT_APPLICANT_LIST.frmIP_PATENT_APPLICANT_LIST.ibd

恢复表结构

dbsake解析frm

dbsake建议在linux系统或者wsl上操作(我在windows上执行dbsake失败), 本示例是在wsl上执行的

  1. 下载dbsake
    curl -s http://get.dbsake.net > dbsake
    
  2. 修改权限
    chmod u+x dbsake
    
  3. 解析frm
    ./dbsake frmdump /mnt/d/Desktop/IP_PATENT_APPLICANT_LIST.frm > /mnt/d/Desktop/IP_PATENT_APPLICANT_LIST.sql
    
  4. 执行IP_PATENT_APPLICANT_LIST.sql中的建表语句建表
  5. [可选]批量执行脚本
    目录结构
    transport.sh
    #!/bin/bash
    
    # 设置当前目录
    current_dir=$(pwd)
    
    # 定义路径
    frm_dir="$current_dir/frm"
    sql_dir="$current_dir/sql"
    
    # 检查目录是否存在,如果不存在则创建
    if [ ! -d "$sql_dir" ]; then
      m
### 如何打开恢复 FRM IBD 文件 #### 使用 MySQL 工具恢复 FRM IBD 文件 FRM IBDMySQL 数据库的重要组成部分,分别存储表的元数据实际数据。以下是具体方法: 1. **安装必要的工具** 需要下载并安装以下两个组件来支持 FRM IBD 的操作: - MySQL Utilities[^3] 版本应与数据库版本匹配(如 MySQL 5.7 对应的 utilities)。 - Visual C++ Redistributable for Visual Studio 2013 (vcredist_x64.exe)。 2. **生成 SQL 表定义文件** 利用 `mysqlfrm` 命令解析 `.frm` 文件,将其转换为可执行的 SQL 脚本。命令如下: ```bash mysqlfrm --server=root:password@localhost:3306 --port=3308 path_to_frm_file/city.frm > output.sql ``` 此处需替换 `root:password` 为真实用户名密码组合,并调整端口号以及目标路径至实际位置。 3. **准备 IBD 文件导入环境** 在尝试加载 .ibd 文件前,先清理现有空间分配情况: ```sql ALTER TABLE city DISCARD TABLESPACE; ``` 这一步会移除当前关联的空间配置以便后续手动指定新源文件。 4. **复制原始 IBD 文件到对应目录下** 将待恢复的目标 ibdata 或独立表空间文件放置于服务器预期查找的位置,默认通常位于 datadir 下面相应 schema 子文件夹里。 5. **重新链接外部 IBData 文件回表格对象上** 执行下面语句完成最终绑定过程: ```sql ALTER TABLE city IMPORT TABLESPACE; ``` 以上流程能够帮助从损坏或者迁移场景中重建基于 InnoDB 引擎驱动的关系型实体及其内部记录集合。 #### 注意事项 - 确认所使用的 mysqld 实例兼容性良好;如果存在跨平台转移,则可能还需要额外考虑字节序差异等问题。 - 如果遇到权限不足错误,请确认授予足够的访问权利给相关账户主体。 ```python # 示例 Python 脚本用于自动化部分上述步骤 import os os.system('mysqlfrm --server=root:password@localhost:3306 --port=3308 /path/to/file.frm > /output/path/output.sql') print("SQL file generated successfully.") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值