[原创] InnoDB 离线转储工具

[复制链接]

该用户从未签到

3

主题

3

回帖

55

积分

[INTOHARD]班长

Rank: 2

积分
55
发表于 2016-5-26 10:14:57 | 显示全部楼层 |阅读模式
一,应用场景;

1,表空间严重损坏,无法恢复;
2,数据库表空间文件丢失后从磁盘上打捞出部分数据页面;
3,恢复删除记录;

二,功能;

从数据页中直接转储出文本格式的行数据,从而可以后期用 LOAD DATA INFILE 导入数据库;

三,前提条件;

1,知道表结构,也就是建表时的SQL语句;
2,表空间中的尽可能多的数据页面;

四,中文支持;

1,支持utf8,gb2312,gbk;(有同类工具,但对中文支持有很大问题,部分中文行不能转储或缺失部分数据)

五,工具界面;
image-2.png

六,操作步骤;

1,选择数据文件;
如果选择的是一个表空间文件,请钩选下方的”转储ibd文件”这样,行外数据会从当前idb文件中读取,同时还需要指定”主键索引ID”,因为同一个 ibd文件中可能有多个索引,有效数据只在聚簇索引中,也就是主键中.

2,选择表定义SQL文件;
用软件导出的SQL语句,尽量删除无用的部分,只保留建表语句,目前支持 ansi文本文件和uft8带BOM与不带BOM文件,目前不支持中文字段名,对于中文字段名,可以在SQL语句中替换成英文,可以正确转储行数据.

3,选择BLOB页面文件夹;
当要转储的是页面打捞工具提取的页面时,或表空间经过打捞工具分析时,BLOB页会保存在一个文件夹下,每个页面按”PAGE_ON”命名,当转储行遇到行外数据时会到这里查找行外数据.

4,选择转储输出文件;
这个不用解释;同时会在此文件相同文件夹下生成一个同名+”.sql”的文件,作为导入数据时的参考;

5,选择”MYSQL5.6或更高”;
当MYSQL版本大于等于5.6时需要钩选此项.

该用户从未签到

3

主题

3

回帖

55

积分

[INTOHARD]班长

Rank: 2

积分
55
 楼主| 发表于 2016-10-16 22:24:56 | 显示全部楼层
自己顶一下吧
回复 支持 反对

使用道具 举报

  • TA的每日心情

    2017-4-26 10:49
  • 签到天数: 59 天

    [LV.5]六品通判

    2

    主题

    146

    回帖

    406

    积分

    [INTOHARD]排长

    Rank: 3Rank: 3

    积分
    406
    发表于 2017-1-5 11:08:40 | 显示全部楼层
    真神奇,挺一个!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    3

    回帖

    9

    积分

    [INTOHARD]工兵

    Rank: 1

    积分
    9
    发表于 2021-4-24 11:57:23 | 显示全部楼层
    真神奇,挺一个!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    快速回复 返回顶部 返回列表