
Normalerweise tar/gzippe ich die resultierende Datei sofort, nachdem ich eine MySQL-Datenbank mit mysqldump
einem 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.
Antwort4
pv
Rate 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