Това ibdata1 не се свива е особено досадна характеристика на MySQL. ibdata1 файлът всъщност не може да се свие, освен ако не изтриете всички бази данни, премахнете файловете и презаредите дъмп.
Но можете да конфигурирате MySQL така, че всяка таблица, включително нейните индекси, да се съхранява като отделен файл. По този начин ibdata1 няма да нарасне толкова голям. Според коментар на Бил Карвин a> това е активирано по подразбиране от версия 5.6.6 на MySQL.
Преди време направих това. Въпреки това, за да настроите сървъра си да използва отделни файлове за всяка таблица, трябва да промените my.cnf за да активирате това:
[mysqld]
innodb_file_per_table=1
https://dev.mysql .com/doc/refman/5.6/en/innodb-file-per-table-tablespaces.html
Тъй като искате да възстановите пространството от ibdata1 всъщност трябва да изтриете файла:
- Направете
mysqldumpна всички бази данни, процедури, тригери и т.н. с изключение наmysqlиperformance_schemaбази данни - Изхвърлете всички бази данни с изключение на горните 2 бази данни
- Спри mysql
- Изтрийте
ibdata1иib_logфайлове - Стартирайте mysql
- Възстановяване от дъмп
Когато стартирате MySQL в стъпка 5, ibdata1 и ib_log файловете ще бъдат пресъздадени.
Сега сте готови да тръгнете. Когато създадете нова база данни за анализ, таблиците ще бъдат разположени в отделен ibd* файлове, а не в ibdata1 . Както обикновено изтривате базата данни скоро след това, ibd* файловете ще бъдат изтрити.
https://dev.mysql.com/doc/refman /5.1/en/drop-database.html
Вероятно сте виждали това:
https://bugs.mysql.com /bug.php?id=1341
С помощта на командата ALTER TABLE <tablename> ENGINE=innodb или OPTIMIZE TABLE <tablename> човек може да извлича данни и индексиращи страници от ibdata1 в отделни файлове. Въпреки това, ibdata1 няма да се свие, освен ако не изпълните стъпките по-горе.
Относно information_schema , това не е необходимо, нито е възможно да се откаже. Всъщност това е просто куп изгледи само за четене, а не таблици. И няма файлове, свързани с тях, дори директория на база данни. information_schema използва db-двигателя на паметта и се изтрива и регенерира при спиране/рестартиране на mysqld. Вижте https://dev.mysql.com/doc/ refman/5.7/en/information-schema.html
.