Моя система использует Ubuntu с базой данных mysql:
У меня есть сложный запрос выбора mysql для запуска.
mysql -u root -p myDB < query.sql
Но когда я пытаюсь запустить его, это всегда дает мне:
ОШИБКА 3 (HY000) в строке 1: Ошибка записи файла '/mnt/disk/tmp/MY0Wy7vA' (Errcode: 28 - на устройстве не осталось места)
У меня 11 ГБ бесплатно на диске, и во время выполнения запроса я отслеживаю его, используя
df -h
а также
df -hi
отслеживать индексы
и я не вижу уменьшения дискового пространства во время выполнения запроса. Все время на диске всегда остается 11 ГБ, где находится папка tmp.
Это вывод df -h
:
ubuntu@ip-10-0-0-177:~$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 3.9G 0 3.9G 0% /dev
tmpfs 799M 57M 742M 8% /run
/dev/xvda1 30G 24G 5.4G 82% /
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/xvdf1 50G 39G 11G 80% /mnt/disk
tmpfs 799M 0 799M 0% /run/user/1000
Это вывод df -aTh
:
Тип файловой системы Размер Используется Использовать% Установлено на
/dev/xvdf1 ext4 50G 39G 11G 80%/mnt/диск
Взгляните на ту часть ошибки, которая указывает на ее собственно запись в /tmp (см. Ниже)
: Error writing file '/mnt/disk/tmp/MY0Wy7vA
В некоторых дистрибутивах Linux/tmp монтируется как tmpfs (ramdisk), поэтому даже если на вашем диске много места, вы можете получить ошибку "без пробела", если вы попытаетесь написать слишком много.
Чтобы узнать о монте, попробуйте
$ cat /proc/mounts
ИЛИ $ cat/proc/self/mounts Или еще лучше
df - aTh
df -h /tmp
Чтобы увидеть скрытые, попробуйте
du -sc *. [^.] * | sort -n
Среди прочего вы можете попытаться заставить MySQL использовать другой каталог temp или не использовать tmpfs для /tmp
Если TMPDIR не установлен в my.cnf, MySQL использует системное значение по умолчанию, которое обычно равно tmp
Вы можете изменить dmp MySQL tmp, как показано ниже:
/tmp
заполнен? Что говоритdf -h
?