MySQL 8.4 Release Notes
B.3.3.4 MySQL 如何处理满磁盘
本节描述了 MySQL 对于磁盘满错误(如““无空间设备””)和配额超出错误(如““写入失败””或““用户块限制达到””)的响应。
本节适用于 MyISAM
表的写操作,也适用于二进制日志文件和二进制日志索引文件,except that references to ““行” 和 ““记录” should be understood to mean ““事件.””
当磁盘满条件发生时,MySQL 做以下操作:
-
每分钟检查一次是否有足够空间写当前行。如果有足够空间,它继续像什么都没发生一样。
-
每 10 分钟它将一个条目写入日志文件,警告磁盘满条件。
以缓解问题,请执行以下操作:
-
要继续,您只需要释放足够的磁盘空间插入所有记录。
-
或者,使用 mysqladmin kill。线程在下一个检查磁盘时(一分钟)被中止。
-
其他线程可能正在等待导致磁盘满条件的表。如果您有多个““锁定” 线程,杀死等待磁盘满条件的线程使得其他线程继续运行。
前述行为的例外情况是,当你使用REPAIR TABLE
或OPTIMIZE TABLE
,或者在LOAD DATA
或ALTER TABLE
语句后创建索引。这些语句都可能创建大型临时文件,如果不被清理,会对系统造成很大的问题。如果磁盘满了,而 MySQL 正在执行这些操作,它将删除大型临时文件,并标记表格为崩溃。唯一的例外是ALTER TABLE
,老表格保持不变。