Я удалил несколько ГБ данных MySQL, но они не были возвращены в файловую систему. Мои диски заполняются, как мне это сделать? Все данные находятся в файле ibdata1, так как это InnoDB.
Я пробовал mysqloptimize -A -o, но это не помогло.
Изменить: Версия сервера: 5.0.51a-24 + lenny2 + spu1 (Debian)
поскольку у вас, похоже, есть монолитный файл innodb - вы не можете его сжать.
если вы можете себе позволить простой, сделайте следующее:
в будущем вы сможете просто резервировать и удалять одну таблицу, а затем восстанавливать ее - благодаря опции file-per-table.
после удаления данных (шаг 6) вам необходимо загрузиться с помощью «mysqld --skip-grant-tables», иначе mysqld не загрузится из-за отсутствия таблиц предоставления.
Если у вас есть innodb_file_per_table
включен, следуя инструкциям ниже. Однако, если он еще не использовался, необходимо будет полностью воссоздать вашу схему, чтобы освободить место.
С InnoDB вам необходимо alter
Таблица. Более новые версии MySQL также выполняют ту же функцию с optimize table
также.
Будьте осторожны с большими таблицами, так как эти команды блокируют таблицу.
Когда вы помещаете данные в таблицу, которой разрешено расширяться, она увеличивается в размере. Когда вы УДАЛЯЕТЕ данные из таблицы, этот размер остается прежним.
Вы можете сделать следующее:
1) ИЗМЕНИТЕ таблицу, как предложил Уорнер, чтобы уменьшить размер.
2) ОПТИМИЗИРУЙТЕ таблицу (если это поддерживается). Это также должно уменьшить размер.
3) Создайте резервную копию таблицы, отбросьте таблицу, затем повторно импортируйте данные в новую таблицу.
В любом случае вы должны сначала создать резервную копию данных. Если вы регулярно удаляете данные, вам следует запускать cronjob для периодической оптимизации или изменения. Это остается верным независимо от того, используете ли вы MySQL, MSSQL или Oracle. Все они требуют обслуживания.
@Warner: Ну, в основном предпочтения. Я начну с этого, сказав, что я не использую MySQL для всего, где производительность является фактором, и если бы я это сделал, я бы оптимизировал, а затем изменил таблицу, чтобы сделать ее больше, чтобы не было штрафа за расширение.
Для моих нужд это 100% автоматизация и простота обслуживания. Запуск optimize сохраняет все в порядке.