Undo_000 文件占用了大部分磁盘空间,我可以删除它们吗?

Undo_000 文件占用了大部分磁盘空间,我可以删除它们吗?

我的 Webmin 显示一条错误消息,称磁盘已满。经过调查,我发现里面的 3 个文件/var/lib/mysql变得太大了:

  1. mysql.ibd (8.8G)
  2. undo_001 (8.4G)
  3. undo_003 (2.5G)

我用 Google 搜索是否可以删除这些文件,但建议针对 mysql.ibd,而没有关于 undo_001 和 undo_002 的明确信息。

我如何才能安全地删除文件以及将哪个文件还原到服务器?截至目前,可用的字节数为 0,我无法在服务器上执行任何操作。

另一个问题是如何防止这些文件变得太大。

3 个文件

答案1

我如何才能安全地删除文件以及将哪个文件还原到服务器?截至目前,可用的字节数为 0,我无法在服务器上执行任何操作。

不是直接的。您需要从 mysql 中删除表以释放空间。请注意,这仅适用于已设置的 innodb。否则innodb_file_per_table,您需要删除表,创建整个数据库的转储并重新加载它(是的……这需要空间)。否则数据库文件不会缩小。

更简单的方法是删除系统上的其他文件。

关于2 UNDO文件:

删除UNDO表空间的命令:

ALTER UNDO TABLESPACE tablespace_name SET INACTIVE;
DROP UNDO TABLESPACE tablespace_name;

您可以在 MySQL 提示符中执行此操作。您将失去执行回滚的能力。


请不要将 mysql 数据库与根系统放在同一个系统上。使用分区或不同的磁盘。如果您只使用 1 个磁盘,则通常将其放在/var/自己的分区上。这将防止根系统变满。

要释放空间,还可以查看/var/log/.gz结尾的任何内容都可以删除。以数字结尾的文件也是如此*[0-9]。这些都是日志文件的备份,有时它们也会变得很大。


这将自动截断撤消日志:

SET GLOBAL innodb_undo_log_truncate=ON;

相关内容