Это ibdata1
не уменьшается это особенно раздражает особенность MySQL. Файл ibdata1
фактически не может быть сокращен, если вы не удалите все базы данных, не удалите файлы и не перезагрузите дамп.
Но вы можете настроить MySQL так, чтобы каждая таблица, включая ее индексы, хранилась как отдельный файл. Таким образом, ibdata1
не будет расти как большой. Согласно Bill Karwin's comment, это включено по умолчанию с версии 5.6.6 MySQL.
Это было давно. Я сделал это.Однако, чтобы настроить сервер использовать отдельные файлы для каждой таблицы необходимо изменить my.cnf
для того, чтобы включить это:
[mysqld]
innodb_file_per_table=1
http://dev.mysql.com/doc/refman/5.5/en/innodb-multiple-tablespaces.html
Как вы хотите, чтобы вернуть пространство от ibdata1
вы на самом деле нужно удалить файл:
- Выполните
mysqldump
всех баз данных, процедур, триггеров и т.д. кроме mysql
и performance_schema
баз данных
- Отбросьте все базы данных кроме вышеуказанных 2 баз данных
- Остановить MySQL
- Удалить
ibdata1
и ib_log
файлы
- Запуск MySQL
- Восстановление из отвала
При запуске MySQL на этапе 5 будут восстановлены файлы ibdata1
и ib_log
.
Теперь вы готовы идти. Когда вы создаете новую базу данных для анализа, таблицы будут находиться в отдельных файлах ibd*
, а не в ibdata1
. Как правило, вы сразу же удаляете базу данных, файлы ibd*
будут удалены.
http://dev.mysql.com/doc/refman/5.1/en/drop-database.html
Вы, наверное, видели это:
http://bugs.mysql.com/bug.php?id=1341
С помощью команды ALTER TABLE <tablename> ENGINE=innodb
или OPTIMIZE TABLE <tablename>
можно извлечь данные и индексные страницы из ibdata1 в отдельные файлы. Тем не менее, ibdata1 не будет сокращаться, если вы не выполните указанные выше шаги.
Что касается information_schema
, то это не обязательно или невозможно отбросить. На самом деле это всего лишь куча просмотров только для чтения, а не таблиц. И нет файлов, связанных с ними, даже не каталог базы данных. В файле informations_schema
используется db-движок памяти, который отбрасывается и регенерируется при остановке/перезапуске mysqld. См. https://dev.mysql.com/doc/refman/5.7/en/information-schema.html.
Дополнительная ссылка: [ibdata1 растет в геометрической прогрессии, когда innodb_file_per_table сконфигурирован] (HTTP: //dba.stackexchange .com/q/39125) – hakre