Освободить место на диске после удаления базы данных в mysql

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

1 ответов


от 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 создает файловая система ("табличное пространство") внутри самих файлов данных. Он никогда не "сжимает" файлы данных при удалении данных, поскольку реорганизация данных в файле может быть дорогостоящей (нет никакой гарантии, что удаленные данные были в конце или даже смежными). Воссоздав базу данных, как описано выше, она делает файл настолько большим, насколько это необходимо для всех данных, но не больше.