Zamrażanie bazy danych MySQL po „użyciu”

17

Niedawno popełniłem głupi błąd i zepsułem moją instalację Ubuntu. Aby to rozwiązać, uruchomiłem z dysku CD na żywo i skopiowałem pliki bazy danych. Jednak teraz skopiowałem foldery ze starej instalacji do nowej, za każdym razem, gdy wpisuję „use nazwa_bazy_danych”, po prostu zawiesza się:

mysql> use my_database_name;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

A następnie zawiesza się bez podawania terminala.

Matthew Haworth
źródło

Odpowiedzi:

28

Przy pierwszym poleceniu „use” po zalogowaniu MySQL skanuje nazwę bazy danych, tabel i kolumn w celu automatycznego uzupełnienia. Jeśli masz wiele baz danych, tabele mogą trochę potrwać.

Aby tego uniknąć, uruchom klienta z opcją -A (lub --no-auto-rehash)

mysql -uroot -p -A

Możesz również dodać zmienną disable_auto_rehash w swoim pliku my.cnf (w sekcji [mysql]), jeśli chcesz ją całkowicie wyłączyć. Ta zmiana nie wymaga ponownego uruchomienia (jest to klient, a nie serwer, zmienna).

Maxime Fouilleul
źródło
czy „chwila” może potrwać dłużej niż jeden dzień dla bazy danych ~ 2,5GiB, czy też jest to nieuzasadnione długie?
lucidbrot
2

W moim przypadku „czytanie informacji o stole” zajmowało nieracjonalnie dużo czasu. Kiedy uruchomiłem mysql -e 'show processlist', odkryłem, że procesem „zawieszającym się” było „Oczekiwanie na zablokowanie metadanych tabeli”. To miało pewien sens, ponieważ miałem długo działające zapytanie o formularz create table from select ...działający gdzie indziej, więc na jednym poziomie mogłem zrozumieć, że dopóki nowa tabela nie zostanie utworzona, metadane dotyczące tabel nie będą dostępne. (Wydaje mi się, że lepiej byłoby, gdyby funkcja automatycznego uzupełniania pomijała wszelkie „niekompletne” tabele z zapytania o metadane, gdyby było to możliwe).

wwkudu
źródło
0

📌

Podczas kopiowania całej bazy danych z innego systemu:

/ var / lib / mysql / *

Możesz zmienić -R mysql: mysql / var / lib / mysql / * i ponownie uruchomić usługę.

☝ to rozwiązało mój problem 👊

Rafael Lemos
źródło
2
Witamy w DBA Stack Exchange! Sformatowałeś to jako cytat; jeśli naprawdę masz to rozwiązanie z innego źródła , musisz podać źródło . Jeśli nie, usuń formatowanie.
Glorfindel