Importuję 7 GB, foobar.sql
aby przywrócić tabelę w lokalnej bazie danych.
$ mysql -h localhost -u root 'my_data' < foobar.sql
$ mysql --version
/usr/local/mysql/bin/mysql Ver 14.12 Distrib 5.0.96, for apple-darwin9.8.0 (i386) using readline 5.1
Jak mogę monitorować jego postęp?
Odpowiedzi:
Jeśli tylko importujesz z pliku zrzutu z CLI na * nix, np
następnie najpierw zainstaluj przeglądarkę potoków w systemie operacyjnym, a następnie spróbuj czegoś takiego:
który pokaże pasek postępu podczas działania programu.
Jest to bardzo przydatne i można go również użyć do oszacowania postępu mysqldump.
pv zrzuca
sqlfile.sql
i przekazuje je do mysql (z powodu operatora potoku). Podczas dumpingu pokazuje postęp. Fajne jest to, że mysql pobiera dane tylko tak szybko, jak to możliwe, aby pv mógł pokazać postęp importu. Nie mam żadnego dowodu. Ale wydaje się, że tak. Wydaje mi się, że używany jest bufor, ale w pewnym momencie myślę, żemysql
nie czyta więcej danych, gdy jest nadal zajęty przetwarzaniem.źródło
sudo hd /dev/sda1 | less
i nie masz całej partycji systemowej w pamięci.pv
w wielu przypadkach nie będzie zbyt dokładne, ponieważ niektóre fragmenty SQL zajmą więcej czasu niż inne. Linia, która tworzy prostą wstawkę, będzie na przykład działać znacznie szybciej niż ta, która tworzy się na indeksie w tabeli, która ma już na przykład wiele wierszy. Ale przybliżona idea postępu, wyjście powinno być pomocne, chyba że używany bufor odczytumysql
jest szczególnie duży (dla wejścia 7 Gb bufor musiałby być bardzo duży, abypv
wyjście nie było w ogóle przydatne.mysqldump
?Jeśli już rozpocząłeś import, możesz wykonać to polecenie w innym oknie, aby zobaczyć aktualny rozmiar baz danych. Może to być pomocne, jeśli znasz całkowity rozmiar importowanego pliku .sql.
Źródło : http://forums.mysql.com/read.php?108,201578,201578
Dokumentacja MySQL 8.0 zawiera następujące informacje na temat dokładności:
źródło
Gdy wykonujesz mysqldump pojedynczej bazy danych, wszystkie tabele są zrzucane w kolejności alfabetycznej.
Oczywiście ponowne ładowanie mysqldump do bazy danych odbywałoby się również w kolejności alfabetycznej.
Możesz po prostu zrobić POKAŻ PROCESLISTĘ; i sprawdź połączenie DB z uruchomionym programem mysqldump. Po ponownym załadowaniu zrzutu połączenie DB zniknie.
Jeśli chcesz wiedzieć, jakie tabele znajdują się w pliku zrzutu, uruchom to dla foobar.sql
AKTUALIZACJA 2012-05-02 13:53 EDT
Przepraszamy za niedostrzeganie, że jest tylko jedna tabela.
Jeśli tabelą jest MyISAM, jedynym sposobem monitorowania jest z punktu widzenia systemu operacyjnego. Powód? Tabela jest blokowana przed zapisem podczas ponownego ładowania. Czego szukasz? Rozmiar plików
.MYD
i.MYI
. Oczywiście należy porównać to z wielkością tabeli wcześniej na innym serwerze DB, z którego importowano.Jeśli tabelą jest InnoDB i masz włączoną opcję innodb_file_per_table , jedynym sposobem monitorowania jest z punktu widzenia systemu operacyjnego. Powód? Tabela jest blokowana przed zapisem podczas ponownego ładowania. Czego szukasz? Rozmiar
.ibd
pliku Oczywiście należy porównać to z wielkością tabeli wcześniej na innym serwerze DB, z którego importowano.Jeśli tabelą jest InnoDB i masz wyłączoną tabelę pliku_wnodb_per_table , nawet punkt widzenia systemu operacyjnego nie może pomóc.
AKTUALIZACJA 2012-05-02 13:56 EDT
W ubiegłym roku poruszyłem coś takiego: Jak uzyskać% postępu dla „type db.sql | mysql”
AKTUALIZACJA 2012-05-02 14:09 EDT
Ponieważ standardowy skrypt mysqldump blokuje tabelę w następujący sposób:
wtedy nie ma sposobu, aby uzyskać postęp z mysql, dopóki blokada tabeli nie zostanie zwolniona.
Jeśli możesz uzyskać
LOCK TABLES
iUNLOCK TABLES
skomentować z pliku zrzutu ...źródło
.MYD
i.MYI
?Co 2 sekundy zobaczysz uruchomione procesy.
Jeśli chcesz, aby rzadziej, to dodaj
-n x
gdzie x oznacza liczbę sekund. 5 sekund to:źródło
Jeśli chcesz tylko sprawdzić, czy jest zablokowany, możesz wykonać zapytanie
i zobacz, co jest wykonywane.
źródło
Jako rozwiązanie dla kogoś, kto nie może zmusić PV do pracy lub dla którego PV kłamie. Możesz monitorować rozmiar pliku ibdata1 w / var / lib / mysql, który zawiera dane. Skończy się to tym samym rozmiarem (lub około) rozmiaru pliku na serwerze źródłowym.
Jeśli istnieje wiele tabel, możesz także zobaczyć, jak pojawiają się one kolejno w / var / lib / mysql / <nazwa bazy danych>.
Zdarzyło mi się korzystać z tego faktu niedawno, gdy długoterminowa baza danych utworzyła plik dziennika o wielkości około 20G przez okres trzech lub czterech lat. Zauważyłem, że przeniesienie trwało wieki i wykorzystałem tę technikę do monitorowania postępów.
Myślę, że jest mało prawdopodobne, aby nadejdzie dzień, kiedy baza danych nie będzie zawierać żadnego pliku. Tymczasem możesz monitorować plik, aby zobaczyć, jak przebiega transfer. Metoda, którą zasugerowałem, była czymś, co można zrobić w takiej czy innej formie od czasu napisania pierwszej bazy danych SQL. Nigdy nie zamierzałem sugerować, że jest to jakaś „oficjalna” technika, na której mógłby polegać ręczny dżokej. Zakłada ogólny poziom biegłości w posługiwaniu się komputerami w ogóle, a w szczególności Uniksem.
źródło
Jeśli twoja baza danych jest cicha (tzn. Nie ma innych użytkowników) i chcesz po prostu zobaczyć aktywność odczytu / zapisu, dlaczego po prostu nie zrobić czegoś takiego:
Zobaczysz liczbę odczytów / zapisów / wstawień / oczekiwań / aktualizacji.
Jeśli wstawiasz na przykład, zobaczysz coś takiego:
Gdzie 28958 to liczba wierszy wstawionych dla twojego interwału (w moim przypadku 10 sekund).
źródło
Dla kogoś, kto szuka przykładowego podglądu potoku przy użyciu
mysqldump
Ciebie, zrobiłbyś coś takiego:-W
Flaga tylko mówi pv czekać na pierwszy bajt przyjść przed pokazujący postęp (po wierszu)źródło
Możesz monitorować import w folderze \ Msql \ Data [nazwa bazy danych]
źródło
Ok, kolejne obejście. Ale to może być najgorsza i niedokładna opcja.
To powiedziawszy, oto moje rozwiązanie dla systemu Windows:
Otwórz Menedżera zadań naciskając
Skopiuj wartość prędkości dysku „mysqld.exe”
Umieść to w kalkulatorze takim jak ten: https://techinternets.com/copy_calc?do
Oszacuj ETA. Moja sprawa była:
Wyniki:
źródło
Jestem zaskoczony, że nikt nie napisał „mysql -v” jako opcji. Jeśli utknie, wyjście zatrzyma się.
źródło
mysql -v
nie jest możliwe. Ponadto przesłanie 7 GB danych do terminala znacznie spowolni przywracanie.