5/5 - (1 голос)

Дано: БД mysql, InnoDB. Необходимо уменьшить БД. В MSSQL есть очень удобная команда SHRINK DATABASE, но к сожалению в mysql по другому.

Движок InnoDB не поддерживает уменьшение размеров файлов БД. Единственный способ уменьшить размер БД — сделать дамп, пере инициализировать хранилище, восстановить из дампа. 

Решение:

  • Сделать mysqldump всех баз данных, процедур, триггеров и т.д., кроме баз данных performance_schema, mysql
  • Удалите все базы данных, кроме двух из предыдущего пункта
  • Остановите службу БД mysql. service mysqld stop
  • Удалить ibdata и ib_log файлы
  • Запустите службу БД mysql. service mysqld start
  • Восстановите из бэкапа базы данных, сохраненные в первом пункте

При помощи команды ALTER <tablename> ENGINE = InnoDB или OPTIMIZE TABLE <tablename> можно оптимизировать данных и индексы. Тем не менее, ibdata не будет уменьшена, если вы не сделаете шаги, описанные выше.