MySQL 9.0 发行说明
本节介绍 MySQL 如何响应磁盘已满错误(例如 “设备上没有剩余空间”),以及配额超出错误(例如 “写入失败” 或 “用户块限制已达”)。
本节与写入 MyISAM
表有关。它也适用于写入二进制日志文件和二进制日志索引文件,只是对 “行” 和 “记录” 的引用应理解为 “事件”。
当出现磁盘已满情况时,MySQL 会执行以下操作
每分钟检查一次,查看是否有足够的空间写入当前行。如果空间足够,则继续执行,就像没有发生任何事情一样。
每 10 分钟向日志文件写入一条条目,警告磁盘已满情况。
为了缓解问题,请采取以下措施
要继续执行,您只需释放足够的空间来插入所有记录。
或者,要中止线程,请使用 mysqladmin kill。线程将在下次检查磁盘(一分钟后)时中止。
其他线程可能正在等待导致磁盘已满的表。如果您有多个 “已锁定” 线程,则杀死正在等待磁盘已满情况的一个线程,可以使其他线程继续执行。
对上述行为的例外情况是使用 REPAIR TABLE
或 OPTIMIZE TABLE
,或者在 LOAD DATA
或 ALTER TABLE
语句之后分批创建索引。所有这些语句都可能创建大型临时文件,如果任其自行处理,会给系统其余部分带来巨大问题。如果在 MySQL 执行这些操作时磁盘已满,它会删除大型临时文件并将表标记为崩溃。例外情况是,对于 ALTER TABLE
,旧表保持不变。