• 一次成功的数据恢复


    背景: 有次脑袋抽了,把数据表的数据都删除了,而且还没有开启日志。后来找到一个Linux软件:Percona Data Recovery Tool ,使用它终于恢复了大部分数据。

    mysql -uroot -p123456;
    
    use my;
    
    CREATE TABLE `exam_file` (
      `id` int(11) NOT NULL auto_increment,
      `no` varchar(20) default NULL,
      `emp_id` int(11) default NULL,
      `emp_name` varchar(20) default NULL,
      `sto_name` varchar(20) default NULL,
      `mod_id` int(11) default NULL,
      `mod_name` varchar(20) default NULL,
      `question` text,
      `answer` text,
      `result` text,
      `remarks` text NOT NULL,
      `follow` text NOT NULL,
      `starttime` bigint(20) default NULL,
      `endtime` bigint(20) default NULL,
      `score` float(11,0) default NULL,
      `auditor` varchar(20) default NULL,
      `auditor_time` datetime default NULL,
      `is_delete` tinyint(1) default '0' COMMENT '0-...1-..',
      PRIMARY KEY  (`id`),
      KEY `no` (`no`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    cd /root/percona-data-recovery-tool-for-innodb-0.5/;
    
    ./page_parser -5 -f /root/ibd/ibdata1;
    
    find / -name ibdata1; #搜索原有的ibdata1文件


    ##################################### 并不需要这一步 ######################################
    #使用需恢复的ibdata1替换现ibdata1
    cd /var/lib/mysql/; mv -f ibdata1 ibdata1_ori; cp -f /root/ibd/ibdata1 /var/lib/mysql/;
    #####################################################################################

    ./create_defs.pl -host 127.0.0.1 -port 3306 -user root -password 123456 -db my -table exam_file >include/table_defs.h;
    
    cat include/table_defs.h; #检查生成的表结构文件是否正确,如果生成不成功,检查表引擎是否是InnoDB,再有问题只能调试create_defs.pl的代码了。
    
    make;
    
    find pages-1465258009/FIL_PAGE_INDEX/0-36/ -type f -name '*.page' | sort -n | xargs cat > pages-1465258009/FIL_PAGE_INDEX/0-36/customer_pages_concatenated;
    
    ./constraints_parser -5 -f pages-1465258009/FIL_PAGE_INDEX/0-36/customer_pages_concatenated >> dumps/default/exam_file_1;
    
    #执行上面命令会输出如下代码,但mysql执行会出错,替代为再下一条命令
    LOAD DATA INFILE '/root/percona-data-recovery-tool-for-innodb-0.5/dumps/default/exam_file' REPLACE INTO TABLE `exam_file` FIELDS TERMINATED BY '	' OPTIONALLY ENCLOSED BY '"' LINES STARTING BY 'exam_file	' (id, no, emp_id, emp_name, sto_name, mod_id, mod_name, question, answer, result, remarks, follow, starttime, endtime, score, auditor, auditor_time, is_delete);
    LOAD DATA LOCAL INFILE '/root/percona-data-recovery-tool-for-innodb-0.5/dumps/default/exam_file' REPLACE INTO TABLE `exam_file` FIELDS TERMINATED BY '	' OPTIONALLY ENCLOSED BY '"' LINES STARTING BY 'exam_file	' (id, no, emp_id, emp_name, sto_name, mod_id, mod_name, question, answer, result, remarks, follow, starttime, endtime, score, auditor, auditor_time, is_delete);
    
    mysql -uroot -p123456;
    
    use my;
    
    LOAD DATA LOCAL INFILE '/root/percona-data-recovery-tool-for-innodb-0.5/dumps/default/exam_file' REPLACE INTO TABLE `exam_file` FIELDS TERMINATED BY '	' OPTIONALLY ENCLOSED BY '"' LINES STARTING BY 'exam_file	' (id, no, emp_id, emp_name, sto_name, mod_id, mod_name, question, answer, result, remarks, follow, starttime, endtime, score, auditor, auditor_time, is_delete);

    参考:

    如何从IBData中恢复MySQL数据库 - MySQL及其它开源数据库-ITPUB论坛-it168旗下专业技术社区

    Percona Data Recovery Tool 单表恢复 - yayun - 博客园

  • 相关阅读:
    常用的STL
    CString,string,char数组的转换
    linux知识
    十一种通用滤波算法(转)
    修复被勒索病毒cl0p损坏的svn代码
    android shell 转发代理shell示例
    3proxy配置
    windbg调试写dmp,随机名字
    nexus6p刷机注意
    mysql语句学习
  • 原文地址:https://www.cnblogs.com/chy1000/p/5570838.html
Copyright © 2020-2023  润新知