![Ограничить размер tmpdir](https://rvso.com/image/1417411/%D0%9E%D0%B3%D1%80%D0%B0%D0%BD%D0%B8%D1%87%D0%B8%D1%82%D1%8C%20%D1%80%D0%B0%D0%B7%D0%BC%D0%B5%D1%80%20tmpdir.png)
Мне нужно ограничить использование диска MySQL tmpdir, чтобы он не "съел" все доступное дисковое пространство. Доступно около 30G, но я видел, как mysqld использовал его весь для создания временной таблицы.
Мой первый подход заключался в реализации квоты диска, но я столкнулся с проблемами, поскольку не знаю, как установить квоту, пока диск используется. Вероятно, это можно сделать во время загрузки в скрипте инициализации, но я не знаю, хорошая ли это идея.
Есть предложения? Что было бы лучшим вариантом в этой ситуации?
ОС — RedHat
uname -a
Linux www.myservername.com 2.6.18-194.17.1.el5 #1 SMP Mon Sep 20 07:12:06 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux
mysql --version
mysql Ver 14.12 Distrib 5.0.77, for redhat-linux-gnu (x86_64) using readline 5.1
решение1
Вы уверены в этом? Насколько мне известно, временные таблицы существуют столько, сколько им нужно - для запроса, но после этого они исчезнут. Если у вас есть столько активных запросов, которым нужны временные таблицы по 30 ГБ, это доставит вам гораздо больше проблем, чем использование всего свободного пространства (я имел в виду дисковый ввод-вывод и т. д.)
Вы по-прежнему можете поиграться с ulimit, но для этого потребуется как минимум перезапуск службы, поэтому я не уверен, что это лучше, чем настройка квот.
решение2
Если у вас есть LVM, создайте отдельный раздел для монтирования необходимого размера. Вы можете использовать опцию --tmpdir для mysqld.
Проверь это.http://dev.mysql.com/doc/refman/5.0/en/temporary-files.html
решение3
После многих попыток на виртуальной машине я решил, что для производственной среды слишком рискованно принудительно включать квоту (-m). Проблема возникла только 1 раз, так как я занимаюсь этой инфраструктурой и подозреваю, что она связана с подозрительным запросом на сервере, создающим огромную временную таблицу.
Спасибо всем за предложения.