Backup MySQL com SSH
Dica publicada em Linux / Introdução
Backup MySQL com SSH
Primeiramente, você vai ter que seguir um desses artigos, para deixar o SSH sem senha:
$ ssh usuario@servidor.com.br -p 5522 \
"mysqldump -u usuario -psenha -h localhost baseonline" |
mysql -u usuario -psenha -h localhost baselocal
Após isso, é só usar o comando acima. Explicarei-o a seguir.
Antes do pipe, em ssh usuario@servidor.com.br -p 5522 "mysqldump -u usuario -psenha -h localhost baseonline", está sendo executado o mysqldump diretamente no servidor e dando o retorno para a sua máquina local. Este retorno é passado para o MySQL da máquina local com o comando mysql -u usuario -psenha -h localhost baselocal, depois do pipe. Dessa forma, o MySQL executa o retorno e copia a base perfeitamente.
Antes de executar esse comando, você vai ter que criar a base na sua máquina local. Exemplo:
Servidor Online
Servidor Local
$ echo "create database teste" |
mysql -u mysql -p*** -h localhost
$ ssh andercrist@rootbrasil.com.br -p 5522 \
"mysqldump -u rootbrasil -p*** -h localhost baseroot" |
mysql -u mysql -p*** -h localhost teste
"mysqldump -u usuario -psenha -h localhost baseonline" |
mysql -u usuario -psenha -h localhost baselocal
Após isso, é só usar o comando acima. Explicarei-o a seguir.
Antes do pipe, em ssh usuario@servidor.com.br -p 5522 "mysqldump -u usuario -psenha -h localhost baseonline", está sendo executado o mysqldump diretamente no servidor e dando o retorno para a sua máquina local. Este retorno é passado para o MySQL da máquina local com o comando mysql -u usuario -psenha -h localhost baselocal, depois do pipe. Dessa forma, o MySQL executa o retorno e copia a base perfeitamente.
Antes de executar esse comando, você vai ter que criar a base na sua máquina local. Exemplo:
Servidor Online
- HostOnline: rootbrasil.com.br
- BaseOnline: baseroot
Servidor Local
- HostLocal: localhost
- BaseLocal: teste
$ echo "create database teste" |
mysql -u mysql -p*** -h localhost
$ ssh andercrist@rootbrasil.com.br -p 5522 \
"mysqldump -u rootbrasil -p*** -h localhost baseroot" |
mysql -u mysql -p*** -h localhost teste
$ ssh usuario@servidor.com.br -C -p 5522 "mysqldump -u usuario -psenha -h localhost baseonline" | mysql -u usuario -psenha -h localhost baselocal
outra ideia, se tiver um pouco mais de folga de processamento e aperto de banda, eh usar o bzip2:
$ ssh usuario@servidor.com.br -p 5522 "mysqldump -u usuario -psenha -h localhost baseonline | bzip2" | bunzip2 | mysql -u usuario -psenha -h localhost baselocal