To ibdata1nie kurczy się, jest szczególnie irytującą funkcją MySQL. ibdata1Plik nie może być rzeczywiście skurczył dopiero po usunięciu wszystkich baz danych, usunąć pliki i przeładować zrzutu.
Ale możesz skonfigurować MySQL, aby każda tabela, łącznie z jej indeksami, była przechowywana jako osobny plik. W ten sposób ibdata1nie będzie tak duży. Zgodnie z komentarzem Billa Karwina jest on domyślnie włączony od wersji 5.6.6 MySQL.
To było jakiś czas temu. Aby jednak skonfigurować serwer tak, aby używał osobnych plików dla każdej tabeli, musisz to zmienić my.cnf, aby to włączyć:
[mysqld]
innodb_file_per_table=1
http://dev.mysql.com/doc/refman/5.5/en/innodb-multiple-tablespaces.html
Aby odzyskać miejsce ibdata1, musisz usunąć plik:
- Wykonaj jedną
mysqldumpze wszystkich baz danych, procedur, wyzwalaczy itp. Oprócz baz danych mysqliperformance_schema
- Usuń wszystkie bazy danych oprócz powyższych 2 baz danych
- Zatrzymaj mysql
- Usuń
ibdata1i ib_logpliki
- Uruchom mysql
- Przywróć ze zrzutu
Po uruchomieniu MySQL w kroku 5 pliki ibdata1i ib_logzostaną odtworzone.
Teraz możesz już iść. Po utworzeniu nowej bazy danych do analizy tabele będą znajdować się w osobnych ibd*plikach, a nie w ibdata1. Jak zwykle upuszczasz bazę danych wkrótce potem, ibd*pliki zostaną usunięte.
http://dev.mysql.com/doc/refman/5.1/en/drop-database.html
Prawdopodobnie widziałeś to:
http://bugs.mysql.com/bug.php?id=1341
Za pomocą polecenia ALTER TABLE <tablename> ENGINE=innodblub OPTIMIZE TABLE <tablename>można wyodrębnić danych i stron indeksu z ibdata1 do oddzielnych plików. Jednak ibdata1 nie zmniejszy się, chyba że wykonasz powyższe kroki.
Jeśli chodzi o information_schema, nie jest to konieczne ani możliwe do upuszczenia. W rzeczywistości jest to tylko garść widoków tylko do odczytu, a nie tabele. I nie ma z nimi żadnych plików, nawet katalogu bazy danych. informations_schemaUżywa pamięci DB-silnik i jest odrzucany i regenerowane po stop / restart mysqld. Zobacz https://dev.mysql.com/doc/refman/5.7/en/information-schema.html .