Mysql:归档innodb表

我使用innodb_file_per_tableconfiguration参数。 我想存档一些旧表。 如果closures数据库并将ibd和frm移动到归档目录,innodb将显示警告:table.ibd不可用。 有没有办法将表从数据库中移走?

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

你可以像这样使用它:

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

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

你可以像这样恢复:

 mysql database < table.sql 

不要试图在文件系统级别做这种事情,尤其是不要在innodb表中。 这是一个失望的道路。 按照Ladadadadabuild议并转储表格,将转储文件保存为您的存档,然后删除表格。 这样,它也很容易恢复,不仅仅是原始的服务器,而是任何服务器。

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

在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;