Redirecionar a saída do mysqldump para scp

13

Eu trabalhei com um linux pro anos atrás, que fez esse truque bacana. Ele poderia fazer um mysqldump, mas redirecionar a saída para uma conexão scp / ssh, em vez de gravar no disco . Utilizamos esse silêncio um pouco onde eu costumava trabalhar, mas não me lembro mais como fazer isso.

Agora, estou enfrentando o problema em que meu disco rígido no servidor está nas últimas pernas e, para fins intensivos, é montado permanentemente como somente leitura.

Eu esperava utilizar esse truque da linha de comando para ainda poder fazer backup dos meus bancos de dados em um novo servidor, pois gravar o dump no disco local e transferi-lo está claramente fora de questão.

Esse truque é realmente possível? Em caso afirmativo, qual é a sintaxe?

Desde então, percebi que devido ao problema de sistema de arquivos somente leitura, tenho experiência que nem consigo conectar ao mysql para fazer o despejo. Mas seu feedback foi excelente e, esperamos, útil para outra pessoa no futuro

xzyfer
fonte
1
"intenções e propósitos"
Ignacio Vazquez-Abrams

Respostas:

11

mysqldump nome_bd | ssh [email protected] "mysql -D dbname"

isso deve funcionar :-)

Configure as chaves entre os sistemas também para que você possa fazer isso sem precisar de um login / passe :-)

Glenn Kelley
fonte
Este é realmente bacana, canalizar o dump diretamente para o mysql no servidor remoto, essencialmente a clonagem do banco de dados é um comando. Estou correcto?
Xzyfer
1
você entendeu ;-) é claro que você sempre pode simplesmente enviar para um arquivo, no entanto, eu gosto dos dumps, pois eles permitem que você role para um backup, se necessário :-) em tempo real, apenas alterando um ip nos arquivos de configuração ... ENORME benefício. Fazemos isso em nossas coisas linode o tempo todo
Glenn Kelley
Sinto que talvez haja alguns problemas de buffer de tubulação aqui?
precisa saber é o seguinte
10
mysqldump ... | ssh ... "cat > out.dmp"
Ignacio Vazquez-Abrams
fonte
Este funcionou muito bem para mim. Configurei a autenticação de chave pública no meu laptop Mac OS X e executei mysqldump -p <dbname> | ssh <user>@<ip_address> "cat > <filename>.sql" exatamente o que eu precisava.
precisa saber é o seguinte
2

Gosto da resposta de @ GlennKelley, mas gostaria de salientar o seguinte:

Tínhamos um banco de dados com 450 GB, mas apenas 500 GB provisionados no host. Não foi possível exportar localmente, por isso exportamos remotamente. Validamos a saída e houve centenas de instâncias em que a saída estava corrompida devido a problemas de buffer de canal.

A melhor solução aqui é, no host de destino em que você deseja que seu dump termine, execute, mysqldumpmas use a -hopção de host. Aponte o host para o servidor MySQL e exporte os dados usando a >.

mysqldump -u root -p -h 10.1.1.199 --all-databases ...<more options>... > dump.sql
Mike Mackintosh
fonte