Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL 5.5] ibdata1 InnoDB ERROR
Forum PHP.pl > Forum > Bazy danych > MySQL
lysy2005
Witam szanowne grono,
mam serwer na centosie5,5 64bit

Mam zainstalowaną bazę MySQL 5.5
bazy są w InnoDB, bazy zapisują sie do pliku InnoDB i wszystko pięknie, działają śmigają aż miło.
Problem pojawia się jak chce wyczyścić jakąś bazę, tabele usunąć dane.
Niby usuwają sie bo już ich nie widać w tabeli, ale plik ibdata1 w katalogu z bazami nie zmniejsza się....
Dane dalej tam siedzą zapychając dysk...

Miał ktoś podobny problem?
Jeżeli tak to co najeży zrobić?
Czytałem ze trzeb konwertować na MyISAM tabele usunąć plik ibdata1 i znowu konwertować na InnoDB..
Na dłuższą nie to niewykonalne z wiadomych przyczyn...

Z góry dziękuje za pomoc, borykam się z tym problemem już długo..
wookieb
Spróbuj pustego altera
  1. ALTER TABLE tabela ENGINE = InnoDB

Druga opcja to
  1. OPTIMIZE TABLE tabela
mortus
Teoretycznie powinno pomóc polecenie:
  1. OPTIMIZE TABLE nazwa_tabeli

Niestety przy standardowych ustawieniach mySQL-a polecenie to nie zwolni przestrzeni na dysku, ponieważ dane przechowywane są w jednej, systemowej przestrzeni tabel (tłumaczenie z tablespace). Ta raz użyta zostaje wciąż zarezerwowana na nowe dane, mimo usunięcia danych zbędnych, już niewykorzystywanych. Trzeba zatem:
1. zrobić backup bazy danych,
2. usunąć bazy danych (DROP), a jeśli na dysku zostaną pliki to należy je usunąć fizycznie,
3. wyłączyć i skonfigurować mySQL-a - w sekcji mysqld pliku konfiguracyjnego dopisać innodb_file_per_table, po czym ponownie włączyć mySQL-a,
4. przywrócić bazy danych z backup-a.
Od teraz dane dla każdej tabeli przechowywane są w osobnych plikach, a zastosowanie wspomnianego wyżej polecenia odnosi oczekiwany rezultat.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.