mysqldump para banco de dados mysql remoto usando gzip

1

Estou tentando transferir dados de um servidor MySQL para outro com compactação gzip. O que eu tenho até agora é:

mysqldump -u [user] -p[pwd] --no-create-db --no-create-info [db] [table] | gzip -c | mysql -h [host] -u [user] -p[pwd]

Claro que isso não funciona porque os dados compactados estão sendo importados para o banco de dados remoto. Como faço para descompactar os dados no servidor remoto antes de importar - ou isso não funcionará e eu preciso usar o SSH?

Obrigado

    
por user3571061 26.02.2016 / 18:17

4 respostas

2

Usando o parâmetro --compress , o cliente MySQL pode enviar dados compactados para o servidor remoto. Então, a linha de comando de transferência pode ser modificada para:

mysqldump -u [user] -p[pwd] --no-create-db --no-create-info [db] [table] | \
 mysql --compress -h [host] -u [user] -p[pwd]

Observe que os dados serão enviados sem criptografia pela rede. Se estiver preocupado com você, canalizar o dump por meio do SSH é uma opção melhor.

    
por 27.02.2016 / 00:23
1

Você pode - por meio de vários canais SSH.

Por exemplo:

ssh user@host1 "mysqldump -u [user] -p[pwd] --no-create-db --no-create-info [db] [table] | gzip -c" | ssh user@host2 "gzip -c -d | mysql -h [host] -u [user] -p[pwd]"

Quebrando isso um pouco, você tem dois comandos SSH, conectados uns aos outros:

  • O primeiro executa o mysqldump e, em seguida, canaliza o resultado para gzip , que, por sua vez, envia o resultado para STDOUT.
  • O segundo comando pega STDIN e o descompacta, depois o canaliza para o comando mysql .

Quando você combina os dois comandos, pode transmitir dados entre dois hosts diretamente usando o SSH.

Exemplo na prática abaixo:

cwatson@zeus:~$ ssh tyr

cwatson@tyr:~$ echo stuff123tyr > testfile.txt
cwatson@tyr:~$ cat testfile.txt
stuff123tyr
cwatson@tyr:~$ logout

ssh tyr "cat ~/testfile.txt | gzip -c" | ssh thor "gzip -c -d > ~/testfile.txt"

cwatson@zeus:~$ ssh thor
Last login: Fri Feb 26 17:28:01 2016 from host217-44-218-9.range217-44.btcentralplus.com
cwatson@thor:~$ cat testfile.txt
stuff123tyr
    
por 26.02.2016 / 18:34
1

Sim, você precisará usar algum tipo de execução remota para fazer com que o lado remoto faça a descompressão:

mysqldump -u [user] -p[pwd] --no-create-db --no-create-info [db] [table] | gzip -c | ssh [host] "gunzip | mysql -h localhost -u [user] -p[pwd]"

No entanto, tenha em mente que o ssh faz compressão de forma transparente por padrão - os passos g (un) zip são desnecessários.

mysqldump -u [user] -p[pwd] --no-create-db --no-create-info [db] [table] | ssh [host] mysql -h localhost -u [user] -p[pwd] deve ser suficiente

    
por 26.02.2016 / 18:39
0

Pre Requesite

  • crie o banco de dados do remetente se ele não existir
  • crie o banco de dados do receptor, se ele não existir
  • o arquivo será salvo no diretório inicial se o caminho não for alterado
  • certifique-se de usar as credenciais corretas
  • Para obter o tipo de usuário do receptor na linha de comando (ctrl + alt + t) --- > %código%
  • Para obter o endereço IP do receptor, digite isto na linha de comando (ctrl + alt + t) --- > %código%

whoami

  • remova ifconfig |grep "inet addr"|head -1 do comando e insira seus valores
por 13.02.2017 / 13:53