我正在导入一个数据库转储--几乎1GB的值:
mysql -uroot -ppassword < mysqldump.sql当我收到警告说硬盘快满了的时候。我惊慌失措,把进口货弄走了。两次。
查看我的DB,我可以看到导入被取消了。然而,当我查看/var/lib/mysql/时,我可以看到ibdata1仍然太大了--我猜它仍然包含所有导入的数据。它的大小大约是DB中可用数据的两倍。
我运行了mysqlcheck -optimize -A,但如果有的话,它会使ibdata1文件更大。
如何清除这些孤立的数据?我在硬盘上还有大约100 on .
发布于 2011-10-14 12:08:13
这是MySQL:一三四一中的一个已知错误。这事已经持续8年了。您可能想尝试一种解决办法,张贴在StackOverflow上:
ibdata1并没有缩小,这是MySQL的一个特别恼人的特性。除非删除所有数据库、删除文件并重新加载转储,否则ibdata1文件实际上无法缩小。
但是您可以配置MySQL,以便将每个表(包括其索引)存储为一个单独的文件。这样,ibdata1就不会增长得那么大。
很久以前我就这么做了。但是,若要设置服务器对每个表使用单独的文件,则需要更改my.cnf以启用以下操作:
[mysqld]
innodb_file_per_table=1http://dev.mysql.com/doc/refman/5.5/en/multiple-tablespaces.html
当您想要从ibdata1中回收空间时,实际上必须删除该文件:
mysqldumpibdata1和ib_log文件当您在步骤5中启动MySQL时,将重新创建ibdata1和ib-log文件。
现在你可以走了。创建用于分析的新数据库时,表将位于单独的ibd*文件中,而不是在ibdata1中。因为您通常很快就会删除数据库,所以ibd*文件将被删除。
http://dev.mysql.com/doc/refman/5.1/en/drop-database.html
或者,如果您想在这样做的情况下保持数据库的运行,您可以尝试这样做:
启用innodb_file_per_table选项而不关闭数据库。这样做的目的是:
https://serverfault.com/questions/321435
复制相似问题