Зайдя в свою панель управления Webmin, я заметил, что практически все мое дисковое пространство заполнено. Я поискал десять самых больших файлов / каталогов в своей системе и обнаружил, что файл с именем ibdata1 занимает около 94 ГБ места. Он находится в моем каталоге / var / lib / mysql.
Что делает ibdata1? Могу ли я удалить его? Я предполагаю, что это какая-то свалка, но это просто дикая догадка.
Файл ibdata1
- системное табличное пространство для инфраструктуры InnoDB.
Он содержит несколько классов для информации, жизненно важной для InnoDB
Обратите внимание на место ibdata1 во вселенной InnoDB (справа)
Вы можете разделить страницы данных и индекса из ibdata1
путем включения innodb_file_per_table. Это приведет к тому, что любая вновь созданная таблица InnoDB будет хранить данные и индексировать страницы во внешнем .ibd
файл.
пример
CREATE TABLE mydb.mytable (...) ENGINE=InnoDB;
, создает /var/lib/mysql/mydb/mytable.frm
/var/lib/mysql/mydb/mytable.ibd
Независимо от того, где хранится таблица InnoDB, функциональность InnoDB требует поиска метаданных таблицы, а также хранения и извлечения MVCC информация для поддержки Соответствие ACID и Изоляция транзакции.
Вот мои прошлые статьи о разделении табличных данных и индексов из ibdata1
Oct 29, 2010
: Мой исходный пост в StackOverflowNov 26, 2011
: ОШИБКА 1114 (HY000) в строке 6308 в файле & Таблица user_analysis заполненаFeb 03, 2012
: Плановая оптимизация таблиц в MySQL InnoDBMar 25, 2012
: Почему InnoDB хранит все базы данных в одном файле?Apr 01, 2012
: Рекомендуется ли innodb_file_per_table?Вы можете продолжать хранить все в ibdata1, но это делает создание снимков LVM настоящей утомительной работой (мое личное мнение).
Вам нужно использовать My StackOverflow post и навсегда сжать этот файл.
Пожалуйста, запустите этот запрос:
SELECT
((POWER(1024,3)*94 - InnoDBDiskDataAndIndexes))/POWER(1024,3) SpaceToReclaim
FROM
(SELECT SUM(data_length+index_length) InnoDBDiskDataAndIndexes
FROM information_schema.tables WHERE engine='InnoDB') A;
Это покажет, сколько потраченного впустую пространства можно вернуть после применения InnoDB Cleanup.
Этот файл ibdata1
не ibdatal
и он содержит все ваши базы данных InnoDB. Если вы удалите его, вы потеряете все свои данные.
Чтобы узнать, как с этим бороться, см. Как сжать / очистить файл ibdata1 в MySQL.
Если вы используете innodb в качестве движка MySQL, по умолчанию сохранит все ваши базы данных в ibdata1. Также есть файлы журналов ib_logfile0 и ib_logfile1. Не удаляйте эти файлы.