mysql - 是否可以仅从 .ibd 文件重新创建表模式?

标签 mysql innodb percona

是否有任何方法可以仅从 .ibd 文件重新创建 mysql 数据库? 如果有人可以发布如何创建 .frm 或获取“创建表”语句甚至完全恢复数据库的方法,那就太好了。

问题是,我使用percona的xtrabackup进行mysql备份,但不幸的是这个工具似乎只备份数据,不包括数据库的模式。在我看来,他们应该在文档中更清楚地提及这一点。所以现在我只有一堆 .ibd 文件,需要完全恢复数据库。数据库中所有表均采用InnoDB引擎。

这是我用来进行备份的命令:

xtrabackup --backup --datadir=/var/lib/mysql/ --target-dir=/backup/

感谢您的帮助!

最佳答案

根据the mysql documentation :

LOCK TABLES tblname WRITE;
ALTER TABLE tbl DISCARD TABLESPACE;
ALTER TABLE tbl IMPORT TABLESPACE;
UNLOCK TABLES;

请注意以下事项:

  • ibd 文件中不能有未提交的事务。
  • .ibd 文件中没有未合并的插入缓冲区条目。
  • 清除已从 .ibd 文件中删除所有带有删除标记的索引记录
  • mysqld 已将 .ibd 文件的所有修改页从缓冲池刷新到文件中。

我希望这个摘要和文档可以帮助您解决问题。如果您还有其他问题,请留言。

关于mysql - 是否可以仅从 .ibd 文件重新创建表模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25969281/

相关文章:

MySQL 服务器崩溃,InnoDB 超出表空间范围

Mysql2::错误:不正确的字符串值 Rails 3 UTF8

mysql - Percona 5.6 InnoDB 问题未正确使用索引

MySQL 'select now()' 与 linux 'date' 不同步

mysql - 1 个 select 语句 2 个不同的结果

MySql - 将大量记录从一个表传输到另一个表

MySQL 启动失败 |如何从Config中删除Db?

php - Wamp 服务器显示语法错误但没有任何实际错误

Mysql CHECKSUM TABLE 不适用于 ndbcluster

mysql - 在 Docker 中引导 Percona Xtradb 集群出现错误 : Can't open and lock privilege tables: Table 'mysql.user' doesn't exist