mysqldump para um tar.gz

mysqldump para um tar.gz

Normalmente, depois de despejar um banco de dados MySQL com mysqldumpo comando, eu imediatamente tar/gzip o arquivo resultante. Estou procurando uma maneira de fazer isso em um comando:

Então, a partir disso:

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

Para algo assim:

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

Ou melhor ainda (já que normalmente estou transferindo o arquivo de despejo para outro servidor):

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

Estou executando o bash no debian.

Responder1

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

Você não pode usar tar em um canal como este e, de qualquer maneira, não precisa dele, pois está gerando apenas um único arquivo. tar só é útil se você tiver vários arquivos.

Responder2

Se você estiver executando isso localmente, basta usar o seguinte comando para fazer backup de seu banco de dados e compactá-lo usando gzip:

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

(Editar: tecla -c fixa)

Responder3

Use um pipe nomeado.

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

Eu uso isso o tempo todo, é incrível.

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

Responder4

Use pve monitore a taxa!

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

Ou, se você souber o tamanho (3 GB), obtenha uma estimativa precisa:

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

informação relacionada