mysqldump in eine tar.gz-Datei

mysqldump in eine tar.gz-Datei

Normalerweise tar/gzippe ich die resultierende Datei sofort, nachdem ich eine MySQL-Datenbank mit mysqldumpeinem Befehl gesichert habe. Ich suche nach einer Möglichkeit, dies mit einem einzigen Befehl zu tun:

Also daraus:

mysqldump dbname -u root -p > dbname.sql
tar czvf dbname.sql.tgz dbname.sql
rm dbname.sql

Zu so etwas:

mysqldump dbname -u root -p > some wizardry > dbname.sql.tgz

Oder noch besser (da ich die Dump-Datei normalerweise per SCP auf einen anderen Server übertrage):

mysqldump dbname -u root -p > send dbname.sql.tgz to user@host

Ich verwende Bash unter Debian.

Antwort1

mysqldump --opt <database> | gzip -c | ssh user@wherever 'cat > /tmp/yourfile.sql.gz'

Sie können in einer solchen Pipe kein Tar verwenden und brauchen es auch nicht, da Sie nur eine einzige Datei ausgeben. Tar ist nur nützlich, wenn Sie mehrere Dateien haben.

Antwort2

Wenn Sie dies lokal ausführen, verwenden Sie einfach den folgenden Befehl, um Ihre Datenbank zu sichern und sie mit gzip zu komprimieren:

mysqldump -u userName -p (passwordPrompt) yourDatabaseName | gzip -c > output.gz 

(Bearbeiten: Taste -c repariert)

Antwort3

Verwenden Sie eine benannte Pipe.

mkfifo mysql_pipe
gzip -9 -c < mysql_pipe > name_of_dump.gz &
mysqldump database > mysql_pipe 
rm mysql_pipe

Ich benutze es ständig, es ist großartig.

http://en.wikipedia.org/wiki/Named_pipe

Antwort4

pvRate nutzen und überwachen!

mysqldump prod_db -h dbslave | pv | gzip -c > prod_2012_08_20.dump.tgz

Oder, wenn Sie die Größe (3 GB) kennen, erhalten Sie eine genaue Schätzung:

mysqldump prod_db -h dbslave | pv -s 3g | gzip -c > prod_2012_08_20.dump.tgz

verwandte Informationen