我使用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;