[分享] mysql数据库数据文件ibdata删除或损坏通过idb文件恢复数据

[复制链接]
  • TA的每日心情
    开心
    2012-4-25 18:36
  • 签到天数: 1 天

    [LV.1]布衣百姓

    200

    主题

    862

    回帖

    2601

    积分

    Intohard Team

    づ甜甜橙子ぜ

    Rank: 7Rank: 7Rank: 7

    积分
    2601
    发表于 2014-4-18 13:34:21 | 显示全部楼层 |阅读模式
    mysql数据库数据文件ibdata删除或损坏通过idb文件恢复数据,在使用独立表空间的情况下,如果不慎使得innodb存储引擎的元数据文件ibdata损坏,我们还可以挽救宝贵的数据.因为在innodb使用独立表空间的情况下,ibdata文件会记录每个innodb表的id,只要使得ibd中的表id和ibdata文件中记录的表id相同,就能够打开表,读取到数据.
    vim打开ibd,使用16进制查看
    # vim -b /backup/a.ibd
    :%!xxd  
    0000000: 5be9 e0b7 0000 0000 0000 0000 0000 0000  [...............
    0000010: 0000 0013 607f 5758 0008 0000 0000 0000  ....`.WX........
    0000020: 0000 0000 0c0a 0000 0c0a 0000 0000 0000  ................
    0000030: 03c0 0000 0280 0000 0000 0000 0026 0000  .............&..
    0000040: 0002 0000 0000 01de 0000 0000 0206 0000  ................
    0000050: 0001 0000 0000 00ee 0000 0000 00ee 0000  ................
    0000060: 0001 0000 0000 009e 0000 0000 009e 0000  ................
    0000070: 0000 0000 0007 0000 0000 ffff ffff 0000  ................
    0000080: ffff ffff 0000 0000 0001 0000 0002 0026  ...............&
    标红的地方就是表id。现在新建数据库test,将表结构导入进去,同样进行16进制查看,就能找到对应的表id
    # vim -b /data/a.ibd
    0000000: 3277 242f 0000 0000 0000 0000 0000 0000  2w$/............
    0000010: 0000 0013 5fbc 2391 0008 0000 0000 0000  ...._.#.........
    0000020: 0000 0000 00c0 0000 00c0 0000 0000 0000  ................
    0000030: 1600 0000 1480 0000 0000 0000 002e 0000  ................
    0000040: 0002 0000 0000 0d1e 0000 0000 0d46 0000  .............F..

    把现在有数据的/backup/下的表id改成新建的表id
    退出保存的时候一定要记得使用:
    %!xxd  -r
    数据越大时间越长
    再把/backup/a.ibd复制过去/data/
    此mysql服务器会认为该表损毁,无法打开,没关系,修改innodb_force_recovery = 6,
    然后重启mysql服务
    然后到数据库去查询a,数据就恢复了
    此时,无法执行写操作,应尽快将数据dump出来,修改innodb_force_recovery = 0,重启服务,创建新表后,把数据导回去就ok了.

    测试单表可以后,开始写脚本批量进行改进制,但是16进制转回二进制十分慢,修复一个库目录大小885M,花了近5个小时才完成。当然,与机器硬件配置有关。
  • TA的每日心情
    开心
    2014-4-16 22:39
  • 签到天数: 1 天

    [LV.1]布衣百姓

    14

    主题

    17

    回帖

    113

    积分

    [INTOHARD]班长

    Rank: 2

    积分
    113
    发表于 2014-4-18 14:48:54 | 显示全部楼层
    看着好厉害的样子,学习啦
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    238

    回帖

    148

    积分

    [INTOHARD]班长

    Rank: 2

    积分
    148
    QQ
    发表于 2014-4-18 17:02:27 | 显示全部楼层
    值得学 习,有软件还有教程吗,我来实践一下
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7

    主题

    164

    回帖

    420

    积分

    [INTOHARD]排长

    Rank: 3Rank: 3

    积分
    420
    QQ
    发表于 2014-4-20 16:02:52 | 显示全部楼层
    UDMA  PC3000  无尘台  专业硬盘数据恢复,数据库修复,服务器RAID数据恢复。电话:15346588815
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2017-3-3 07:49
  • 签到天数: 32 天

    [LV.5]六品通判

    5

    主题

    1093

    回帖

    1219

    积分

    [INTOHARD]营长

    Rank: 6Rank: 6

    积分
    1219
    发表于 2017-2-4 09:03:32 | 显示全部楼层
    好东西不能错过,谢谢提供
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-4-28 18:23
  • 签到天数: 22 天

    [LV.4]七品知县

    0

    主题

    86

    回帖

    184

    积分

    [INTOHARD]班长

    Rank: 2

    积分
    184
    发表于 2017-2-26 15:47:54 | 显示全部楼层
    感谢分享,学习了
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

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