1

Мне нужно ограничить использование диска 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

3 ответа3

1

Ты уверен в этом? AFAIK временные таблицы существуют столько, сколько им нужно - для запроса, но после того, как они исчезнут. Если у вас столько активных запросов, для которых нужны временные таблицы 30 ГБ, это доставит вам гораздо больше хлопот, чем использование всего свободного пространства (я имел в виду дисковый ввод-вывод и т.д.)

Вы все еще можете играть с ulimit, но для этого потребуется, по крайней мере, перезапуск службы, поэтому я не уверен, что это лучше, чем ввод квот.

1

Если у вас есть LVM, создайте отдельное разделение для подключения в необходимом размере. Вы можете использовать опцию --tmpdir для mysqld.

Проверь это. http://dev.mysql.com/doc/refman/5.0/en/temporary-files.html

0

После многих попыток на виртуальной машине я решил, что для производственной среды слишком велик риск, чтобы квота была включена (-m). Проблема возникла только 1 раз, так как я забочусь об этой инфраструктуре и подозреваю, что она должна быть связана с хитрым запросом на сервере, создающем огромную временную таблицу.

Спасибо всем за предложения.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .