2012-03-27 34 views
16

ich zu verstehen versuchen, wie mysqldump funktioniert:mysqldump Kompression

wenn ich mysqldump auf meinem PC ausführen und zu einem Remote-Server verbinden:

mysqldump -u mark -h 34.32.23.23 -pxxx --quick | gzip > dump.sql.gz 

wird der Server komprimiert und sie zu mir schicken Wie gzip oder wird mein Computer zuerst alle Daten empfangen und dann komprimieren?

Da ich eine sehr große Remote-db zu exportieren habe, und ich möchte den schnellsten Weg wissen, es über ein Netzwerk zu tun!

+0

Wenn diese Zeile auf Ihrem PC ausgeführt wird, dann wird der 'gzip' wird auch auf Ihrem PC läuft. Das bedeutet, dass Sie den Rohdump unkomprimiert erhalten. – pritaeas

Antwort

29

Sie sollten Verwendung von ssh + scp,
weil der Dump auf localhost machen schneller,
und Sie müssen nur über die gzip (weniger Netzwerk-Overhead) scp

wahrscheinlich Sie können diese

tun
ssh [email protected] "mysqldump -u mark -h localhost -pxxx --quick | gzip > /tmp/dump.sql.gz" 

scp [email protected]:/tmp/dump.sql.gz . 

(optional Verzeichnis/tmp sollte ändern, was auch immer Verzeichnis Sie bequem mit)

+0

nette Idee, das Problem ist, dass ich mich mit cleardb (die eine kommerzielle Instanz von Amazon rds ist) beschäftigen und ich habe nicht über ssh einloggen .. weiß nicht, ob es geht möglich sein! –

+0

mit der Unterstützung überprüfen? – ajreal

+0

yep, das ist der nächste Schritt .. Aber auf einer (virtuell) geteilten Datenbank glaube ich nicht, dass sie mich das tun lassen :( –

0

Dies ist, wie ich es tun:

einen teilweisen Export SELECT INTO OUTFILE mit Do und die Dateien auf dem gleichen Server erstellen.

Wenn Ihre Tabelle 10 Millionen Zeilen enthält. Führen Sie einen Teilexport von jeweils 1 Million Zeilen jeweils in einer separaten Datei durch.

Sobald die erste Datei fertig ist, können Sie sie komprimieren und übertragen. In der Zwischenzeit kann MySQL weiterhin Daten in die nächste Datei exportieren.

Auf dem anderen Server können Sie beginnen, die Datei in die neue Datenbank zu laden.

BTW, viel davon kann gescriptet werden.

+0

OUTFILE ist nicht möglich in Amazon RDS – codewandler

11
+0

ja, es reduziert eine Menge Datentransfer! Aber was ich verstehen wollte war: wenn der mysqldump die Daten auf meinem PC oder auf dem Remote-Server zwischenspeichert .. Von dem, was ich verstanden habe, überträgt es zuerst alle Daten auf meinem PC. Bin ich richtig? –

+0

Es gibt nicht viel Dokumentation darüber, wie der '--compress' Parameter funktioniert.Ich kann eine fundierte Vermutung machen, aber müsste die Quelle sehen, um sicher zu sein.Ich dachte aber, Ihre Frage war, ob es gekommen ist komprimierte Serverseite oder Client s ide. In Ihrem Beispiel ist es sicherlich Client-Seite.Wenn Sie den Komprimierungsparameter gesehen haben, reduzieren Sie die Datenübertragung, dann sollte das Ihre Frage beantworten, dass sie es serverseitig komprimiert. –