美文网首页
MySQL基于ibd恢复表数据

MySQL基于ibd恢复表数据

作者: 伊夫_艾尔斯 | 来源:发表于2022-12-17 16:37 被阅读0次

    如果你有.ibd文件的一个干净的备份,你可以按如下操作恢复它到MySQL中:

    1. 在接收数据的数据库中,基于原表结构创建对应的数据表;
    2. 执行如下ALTER TABLE语句(tbl_name: 你自己的表名,下同):
    
    ALTER TABLE  tbl_name  DISCARD TABLESPACE;
    
    

    警告: 这个语句删除当前.ibd文件。

    1. 把备份的.ibd文件放到新数据库的数据目录:
    • 数据目录查找方式:
     SHOW GLOBAL VARIABLES LIKE '%datadir%';
    
    • 修改ibd文件所属权限(非常重要,不然执行下一步时会提示表不存在)
    chown mysql:mysql tbl_name.ibd
    
    1. 发出这个ALTER TABLE语句:
    
    ALTER TABLE tbl_name IMPORT TABLESPACE;
    
    
    在上文中,一个.ibd文件干净的备份意为:
    • .ibd文件里没有尚未提交的事务做的修改。

    • .ibd文件里无未合并的插入混充条目。

    • 净化已经从.ibd文件移除所有已标注删除的索引记录。

    • mysqld已经把.ibd文件的所有已修改页面从缓冲池 刷新到文件。

    你可以用下列方法生成一个.ibd文件的干净备份:
    • 停止所有来自mysqld服务器的活动,并提交所有事务。

    • 等待直至SHOW INNODB STATUS显示在数据库被已经没有激活的事务,并且InnoDB主线程的状态是Waiting for server activity。然后你就可以复制.ibd文件了。

    相关文章

      网友评论

          本文标题:MySQL基于ibd恢复表数据

          本文链接:https://www.haomeiwen.com/subject/uicsqdtx.html