我的 Webmin 显示一条错误消息,称磁盘已满。经过调查,我发现里面的 3 个文件/var/lib/mysql
变得太大了:
- mysql.ibd (8.8G)
- undo_001 (8.4G)
- undo_003 (2.5G)
我用 Google 搜索是否可以删除这些文件,但建议针对 mysql.ibd,而没有关于 undo_001 和 undo_002 的明确信息。
我如何才能安全地删除文件以及将哪个文件还原到服务器?截至目前,可用的字节数为 0,我无法在服务器上执行任何操作。
另一个问题是如何防止这些文件变得太大。
答案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;