美文网首页
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