• mysql 之 frm+ibd文件还原data


     
    此方法只适合innodb_file_per_table          = 1 
    当误删除ibdata 该怎么办? 如下步骤即可恢复: 
    1、准备工作 
    1)准备一台纯洁的mysql环境【从启动到现在没有使用过INNODB的表结构的mysql环境】(当然也可以不用纯洁的,但是一定要保证表id 小于后续要恢复的表id); 

    2)备份frm、ibd文件; 

    2、通过frm恢复表结构 
    1)在测试库里新建任意一表,表结构随意,表名必须为:要恢复数据的表名【即为frm前缀名】 

    例如:CREATE TABLE five_monitor (id int(11) NOT NULL ) ENGINE=InnoDB ; 

    2)关闭mysql 

    3)用需要恢复的frm文件直接替换测试库刚新建的frm文件; 

    4)在配置文件里添加innodb_force_recovery = 6,然后启动; 

    5)show create table  five_monitor;即能看到你需要的表结构信息了; 

    6)然后去掉innodb_force_recovery = 6 设置,重启mysql为下一步做准备; 

    3、通过ibd恢复表数据 
    1)查看表的space id( http://haildb.sourcearchive.com/ ... 0fil_8h_source.html   00118有说明) 

    a: hexdump -C five_monitor.ibd |head -n 3 |tail -n 1|awk '{print $6$7}‘ 



    b: 通过以上结果到mysql里面去转成10进制:select conv('67c0',16,10); 



    说明space id为:26560 

    2)新建innodb表补充ibdata里面的table id 

    如果想看到ibd里面的数据,我们必须让space id 与刚启动的mysql ibdata里面的记录的表id一致; 

    新建一个表innodb,ibdata里面的表id就会+1,而刚才已经新建过表了,所以id已经+1了 

    故我们还需要新建26560-1(刚才新建的)-1(要恢复的表)=26558个表 

    for i in `seq 0 26557`; do mysql --user=××× ×××××  -e "CREATE TABLE iinser$i (id bigint(20) NOT NULL AUTO_INCREMENT,PRIMARY KEY (id)) ENGINE=innodb "; done 

    3)导入要恢复的表 

    a:在另外一个测试库里按照第2步导出的表结构新建表; 

    b:alter table   five_monitor discard tablespace; 

    c:cp 要恢复的ibd 到刚建的表的目录里,并修改mysql权限 

    d:alter table   five_monitor import tablespace; 

    4)在配置文件里添加innodb_force_recovery = 6,然后启动; 

    这样你就能看到你想要的数据了。当然一定要通过dump 或者select * from into outfile把data导出; 
  • 相关阅读:
    sp2010 升级sp2013 用户无法打开网站
    powerviot install in sharepoint 2013
    can not connect cube in performancce dashboard
    westrac server security configure user info
    添加报表服务在多服务器场
    sharepoint 2013 office web app 2013 文档在线浏览 IE11 浏览器不兼容解决方法
    delete job definition
    目前付款申请单内网打开慢的问题
    item style edit in sharepoint 2013
    Could not load file or assembly '$SharePoint.Project.AssemblyFullName$'
  • 原文地址:https://www.cnblogs.com/lvdongjie/p/6943727.html
Copyright © 2020-2023  润新知