mysqldump a un tar.gz

mysqldump a un tar.gz

Por lo general, después de descargar una base de datos MySQL con mysqldumpun comando, inmediatamente tar/gzip el archivo resultante. Estoy buscando una manera de hacer esto con un solo comando:

Entonces de esto:

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

A algo como esto:

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

O incluso mejor (ya que normalmente estoy enviando el archivo de volcado a otro servidor):

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

Estoy ejecutando bash en Debian.

Respuesta1

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

No puedes usar tar en una tubería como esta, y no lo necesitas de todos modos, ya que solo estás generando un único archivo. tar sólo es útil si tiene varios archivos.

Respuesta2

Si está ejecutando esto localmente, simplemente use el siguiente comando para hacer una copia de seguridad de su base de datos y comprimirla usando gzip:

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

(Edición: tecla -c fija)

Respuesta3

Utilice una tubería con nombre.

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

Lo uso todo el tiempo, es increíble.

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

Respuesta4

¡Usa pvy controla la velocidad!

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

O, si conoce el tamaño (3 GB), obtenga una estimación precisa:

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

información relacionada