Це ibdata1
не зменшується - це особливо дратівлива особливість MySQL. ibdata1
Файл фактично не може бути зменшений , якщо ви не видалите всі бази даних, видаліть файли і перезавантажте дамп.
Але ви можете налаштувати MySQL так, що кожна таблиця, включаючи її індекси, зберігається як окремий файл. Таким чином ibdata1
не виросте настільки великим. Відповідно до коментаря Білла Карвіна, це ввімкнено за замовчуванням у версії 5.6.6 MySQL.
Деякий час тому я це робив. Однак, щоб налаштувати ваш сервер, щоб використовувати окремі файли для кожної таблиці, яку потрібно змінити my.cnf
, щоб увімкнути це:
[mysqld]
innodb_file_per_table=1
http://dev.mysql.com/doc/refman/5.5/uk/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/uk/information-schema.html .