如果磁盘已满,如何避免 mysql 查询挂起

如果磁盘已满,如何避免 mysql 查询挂起

磁盘已满,我的查询挂在 mysql 查询上。

来自MySQL手册:

当发生磁盘已满的情况时,MySQL 会执行以下操作:

它每分钟检查一次是否有足够的空间来写入当前行。如果有足够的空间,它会继续,就像什么都没发生过一样。

每 10 分钟它会向日志文件写入一条条目,警告磁盘已满的情况。

有什么选项可以改变这种行为吗?如果它发现磁盘已满,我需要它返回。

答案1

中没有这样的选项Mysql

如果Mysql需要写入磁盘并且没有可用空间,则无法写入任何内容,就是这样。

如果您有磁盘空间问题,最好的办法是使用专用监控工具监控磁盘空间使用情况。当出现警报时,请在影响Mysql功能之前解决它。

尝试找出导致空间过载的原因并解决它。至少考虑添加更多磁盘。

磁盘已满的问题绝不是系统管理员(或 DBA)想要的!

答案2

正如前面提到的,您永远都不想让磁盘满了。假设您使用的是基于 Linux 的系统,并且这是一个问题,您可以设置一个 cron-job 来检查磁盘空间使用情况,并按规定的时间间隔通过电子邮件将其发送给您。

#!/bin/sh
df -H | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5 " " $1 }' | while read output;
do
  echo $output
  usep=$(echo $output | awk '{ print $1}' | cut -d'%' -f1  )
  partition=$(echo $output | awk '{ print $2 }' )
  if [ $usep -ge 90 ]; then
    echo "Running out of space \"$partition ($usep%)\" on $(hostname) as on $(date)" |
     mail -s "Alert: Almost out of disk space $usep%" [email protected]
  fi
done

相关内容