Geralmente, após despejar um banco de dados MySQL com o mysqldump
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 ainda melhor (já que geralmente estou scp'ing o arquivo de despejo em outro servidor):
mysqldump dbname -u root -p > send dbname.sql.tgz to user@host
Estou executando o bash no debian.
mysqldump | tar cf - | gzip -c | ssh ... 'cat > file.tgz'
mysqldump --opt <database> | gzip -c | cat > $(date +%Y-%m-%d-%H.%M.%S).sql.gz
gzip -c > $(date +%Y-%m-%d-%H.%M.%S).sql.gz
netcat
vez de canalizar para o ssh. Você economizará um pouco na sobrecarga de criptografia do ssh, se estiver sendo transferida por uma rede segura (ou se você não se importa com segurança). Hoje em dia você também pode considerar usar emxz
vez degzip
.Se você estiver executando isso localmente, use o seguinte comando para fazer backup do seu banco de dados e compactá-lo usando gzip:
(Editar: chave -c fixa)
fonte
gzip -c
, certo?Use um pipe nomeado.
Eu uso o tempo todo, é incrível.
http://en.wikipedia.org/wiki/Named_pipe
fonte
mkfifo mysql_pipe; gzip -9 -c < mysql_pipe > name_of_dump.gz &; mysqldump database > mysql_pipe; rm mysql_pipe
lá, uma linha. É claro que eu mantinha o cachimbo por perto e o usava sempre.Eu escrevi um script rápido para sugar um banco de dados mysql remoto. Ele usa compressão mysql, compressão gzip e ssh. Sugou um banco de dados com vários GB a uma taxa incrível.
Um benefício colateral é que ele não requer espaço livre no servidor de banco de dados de origem, para que você possa usá-lo para fazer backup de um banco de dados em um servidor com zero espaço em disco livre antes de remover os dados.
Espero que ajude alguém.
fonte
Use
pv
e monitore a taxa!Ou, se você souber o tamanho (3 GB), obtenha uma estimativa precisa:
fonte
Tente o seguinte:
Por favor, não que eu não seja nada bom nessas coisas, eu apenas combinei duas opções na Web em uma.
Pode muito bem ser melhor de alguma outra maneira, mas essa é uma linha que funciona para mim.
No entanto, ele precisa
ssh.keys
ser instalado e aceito, se você quiser usá-lo em scriptscrontab
ou similares.fonte
Você pode fazer como:
mysqldump --add-drop-table -h dbhost -u dbuser -p dbname (tablename tablename ... ) | gzip -c > wp.sql.gz
por exemplo
mysqldump --add-drop-table -h localhost -u root -p wordpress | gzip -c > wp.sql.gz
fonte
Eu tenho trabalhado neste script bash abaixo que tenta reunir todos os bons conselhos que eu vi quando se trata de despejar / restaurar com o mysql. É direcionado para operações remotas.
Apenas reconfigure os vars e experimente. :)
Os recursos são:
O que precisa ser aprimorado:
Compartilho esse script aqui, esperando que possa ser melhorado pela comunidade. (melhor visualizado com o nano ou outro editor que colore o código)
--------------------------------- corte aqui --------------- -------------------
fonte
Você também pode armazenar sua senha em um arquivo de configuração e usar esta opção --defaults-extra-file:
O arquivo de configuração pode ficar assim:
fonte