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