2011-01-31 10 views

Odpowiedz

39

Tak, patch was committed dniu 27 marca 2010:

Ta nowa łatka ma dodatkowy parametr --show-Progress-wielkości, które przez domyślnie jest ustawiony na 10000. Tak więc, gdy używana jest opcja --verbose, co 10 000 linii otrzymasz regularne dane wyjściowe z liczby wierszy dla konkretnej tabeli porzuconej.

Sprawdź swoją wersję, w razie potrzeby zaktualizuj i ciesz się.

+0

niesamowite, jeszcze trochę codding potrzebne (Get wszystko tabele i ich wiersze się liczą), ale szwy są dobrym punktem wyjściowym do kodowania – mpapis

+2

Używam mysqldump Ver 10.13 Distrib 5.5.11, dla Win32 (x86), i wydaje się, że nie został on zbudowany z tą łatką. Jak ustalić, czy ta łatka została wprowadzona do stabilnego wydania? –

+0

Chciałbym również wspomnieć o "barach" (http://sourceforge.net/projects/clpbar/) i "pv" (http://linux.die.net/man/1/pv) utils. –

34

zainstalować i używać pv (jest on dostępny w postaci pakietu yum na CentOS)

http://www.ivarch.com/programs/pv.shtml

PV ("rura Viewer") jest narzędziem do monitorowania postępów danych rurociągiem . Można go wstawić do dowolnego standardowego potoku między dwoma procesami, aby uzyskać wizualną informację o tym, jak szybko przechodzą dane, o tym, jak długo trwało, jak bliskie ukończenia jest , oraz o szacunkowej długości tego czasu do ukończenie.

Zakładając rozmiar spodziewać pliku wynikowego dumpfile.sql 100m (100 MB), stosowanie pv byłby następujący:

wyjście

mysqldump <parameters> | pv --progress --size 100m > dumpfile.sql

Konsola będzie wyglądać następująco:

[===> ] 20%

Spójrz na stronie man man pv więcej opcji. Możesz wyświetlić szybkość transferu, czas, który upłynął, liczbę przesłanych bajtów i więcej.

Jeśli nie znasz rozmiaru pliku zrzutu, istnieje sposób na uzyskanie rozmiaru bazy danych MySQL z table_schema - nie będzie to rozmiar pliku zrzutu, ale może być na tyle blisko, aby twoje potrzeby:

SELECT table_schema AS "Database", ROUND(SUM(data_length + index_length)/1024/1024, 2) AS "Size (MB)" FROM information_schema.TABLES GROUP BY table_schema; 
+3

Ponieważ indeksy się nie pojawiają w dump, 'index_length' należy pominąć. – mtoloo

+1

Rozważ usunięcie argumentu '--progress'. W moim przypadku (wersja 1.5.3) oznacza to wyświetlenie paska postępu _tylko_, ale jest więcej informacji, gdy go nie podam. – Melebius

4

Kompletna wersja odpowiedzi Russell E Glaue. Get zaokrąglony rozmiar db jako pv akceptuje tylko całkowitą i obliczyć długość danych bez indeksów za @mtoloo komentarza:

db_size=$(mysql -h"$DB_HOST" \ 
    -u"$DB_USERNAME" \ 
    -p"$DB_PASSWORD" \ 
    --silent \ 
    --skip-column-names \ 
    -e "SELECT ROUND(SUM(data_length)/1024/1024, 0) \ 
     FROM information_schema.TABLES \ 
     WHERE table_schema='$DB_NAME';") 

Tworzenie kopii zapasowej na o czasie, Nazwa pliku:

mysqldump -h"$DB_HOST" \ 
    -u"$DB_USERNAME" \ 
    -p"$DB_PASSWORD" \ 
    --single-transaction \ 
    --order-by-primary \ 
    --compress \ 
    $DB_NAME | pv --progress --size "$db_size"m > "$(date +%Y%m%d)"_backup.sql 
Powiązane problemy