Ограничение пространства для пользователя MySQL

Я поддерживаю сервер MySQL. Есть один пользователь, чей размер базы данных очень быстро увеличился. Поскольку он использует InnoDB, файл /data/mysql/ibdata1 вырос из вложений. Я мог бы смонтировать небольшой раздел и поместить туда свою базу данных, но файл ibdata1, похоже, используется всеми базами данных.

Меня беспокоит то, как ограничить конкретного пользователя в использовании большего объема базы данных, чем определено для него.

1 ответ

Решение

Нет готового решения. Но вы можете сделать следующее:

  1. Получить data_length а также index_length для таблиц, которыми владеет пользователь show table status (Это количество места, которое файлы данных используют в файловой системе)
  2. Суммируйте эти числа для всех баз данных
  3. Если предел достигнут, удалите, например, привилегии INSERT для этого пользователя, чтобы он больше не мог вставлять новые данные.

Но имейте в виду, что удаление данных из таблиц InnoDB не освободит место в файловой системе. Так что, если ваш пользователь достиг предела, он не сможет ничего с этим поделать. (За исключением сброса всех таблиц InnoDB, удаления их и повторного импорта)

Другие вопросы по тегам