
Por lo general, después de descargar una base de datos MySQL con mysqldump
un 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.
Respuesta4
¡Usa pv
y 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