Восстановить дисковое пространство после удаления базы данных в MySQL - PullRequest
22 голосов
/ 13 мая 2011

Я создал несколько очень больших баз данных и с тех пор отбросил несколько.Я заметил, что мое дисковое пространство восстановилось не так, как я ожидал.Например, последняя добавленная мною база данных фактически израсходовала все свободное место и была прервана, поэтому я удалил эту схему.До этого у меня было 12,4 ГБ свободного места, теперь у меня только 7,52 ГБ свободного.
Что здесь происходит?Как мне вернуть обратно ~ 5 ГБ?

1 Ответ

22 голосов
/ 13 мая 2011

С http://dev.mysql.com/doc/refman/5.1/en/innodb-data-log-reconfiguration.html:

В настоящее время вы не можете удалить файл данных из табличного пространства. Чтобы уменьшить размер табличного пространства, используйте следующую процедуру:

  1. Используйте mysqldump для вывода всех ваших таблиц InnoDB.

  2. Остановите сервер.

  3. Удалите все существующие файлы табличного пространства, включая файлы ibdata и ib_log. Если вы хотите сохранить резервную копию информации, скопируйте все файлы ib * в другое место перед удалением файлов в вашей установке MySQL.

  4. Удалите все файлы .frm для таблиц InnoDB.

  5. Настройка нового табличного пространства.

  6. Перезагрузите сервер.

  7. Импорт файлов дампа.

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

...