
Normalmente, depois de despejar um banco de dados MySQL com mysqldump
o 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.
Responder4
Use pv
e 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