Ten ibdata1
nie kurczy się jest szczególnie irytującą cechą MySQL. ibdata1
plik nie może być w rzeczywistości zmniejszony, chyba że usuniesz wszystkie bazy danych, usuniesz pliki i ponownie załadujesz zrzut.
Ale możesz skonfigurować MySQL tak, aby każda tabela, w tym jej indeksy, była przechowywana jako osobny plik. W ten sposób ibdata1
nie będzie tak duży. Według komentarz Billa Karwina jest to domyślnie włączone od wersji 5.6.6 MySQL.
Zrobiłem to jakiś czas temu. Jednak, aby skonfigurować serwer tak, aby używał oddzielnych plików dla każdej tabeli, musisz zmienić my.cnf
aby to umożliwić:
[mysqld]
innodb_file_per_table=1
https://dev.mysql .com/doc/refman/5.6/en/innodb-file-per-table-tablespaces.html
Jak chcesz odzyskać miejsce z ibdata1
faktycznie musisz usunąć plik:
- Wykonaj
mysqldump
wszystkich baz danych, procedur, wyzwalaczy itp. z wyjątkiemmysql
iperformance_schema
bazy danych - Upuść wszystkie bazy danych z wyjątkiem powyższych 2 baz danych
- Zatrzymaj mysql
- Usuń
ibdata1
iib_log
pliki - Uruchom mysql
- Przywróć ze zrzutu
Po uruchomieniu MySQL w kroku 5 ibdata1
i ib_log
pliki zostaną odtworzone.
Teraz możesz iść. Kiedy tworzysz nową bazę danych do analizy, tabele będą znajdować się w oddzielnym ibd*
pliki, nie w ibdata1
. Ponieważ zwykle upuszczasz bazę danych wkrótce po tym, ibd*
pliki zostaną usunięte.
http://dev.mysql.com/doc/refman /5.1/pl/drop-database.html
Prawdopodobnie widziałeś to:
http://bugs.mysql.com /bug.php?id=1341
Za pomocą polecenia ALTER TABLE <tablename> ENGINE=innodb
lub OPTIMIZE TABLE <tablename>
można wyodrębnić dane i strony indeksowe z ibdata1 do oddzielnych plików. Jednak ibdata1 nie zmniejszy się, chyba że wykonasz powyższe kroki.
Odnośnie information_schema
, który nie jest konieczny ani możliwy do zrzucenia. W rzeczywistości jest to tylko kilka widoków tylko do odczytu, a nie tabel. I nie ma z nimi żadnych plików, nawet katalogu bazy danych. informations_schema
używa pamięci db-engine i jest usuwany i regenerowany podczas zatrzymania/restartowania mysqld. Zobacz https://dev.mysql.com/doc/ refman/5.7/en/schemat-informacyjny.html
.