Mysql:归档 innodb 表

Mysql:归档 innodb 表

我使用 innodb_file_per_table 配置参数。我想存档一些旧表。如果我关闭数据库并将 ibd 和 frm 移至存档目录,innodb 会显示警告,即 table.ibd 不可用。有没有办法将表从数据库中移出?

答案1

您熟悉吗mysqldump?它是一种工具,可创建一个包含 SQL 语句的文件,该文件将重新创建您要求其转储的表并导入其中包含的数据。它是标准 MySQL 安装的一部分。

你可以像这样使用它:

mysqldump --defaults-extra-file=/home/username/.my.cnf database table > table.sql

默认情况下,转储包含CREATE TABLE语句。

您可以像这样恢复:

mysql database < table.sql

答案2

不要尝试在文件系统级别执行此类操作,尤其是对于 innodb 表。这肯定会让你失望。按照 Ladadadada 的建议进行操作,转储表,将转储文件保存为存档,然后删除表。这样,它也很容易恢复,不仅可以恢复到原始服务器,还可以恢复到任何服务器。

答案3

你可以做的是重命名你的表格使用以下命令

在 MySQL 客户端中:

SHOW CREATE TABLE table1\G

RENAME TABLE table1 TO table2;

CREATE table table1 <table spec>; 

<table spec>命令的结果在哪里SHOW CREATE TABLE

然后在你的 shell 中:

cp /path/to/datadir/table2/*.{ibd,frm} /path/to/archivedir/

回到 MySQL 客户端:

DROP TABLE table2;

相关内容