Você pode definir um túnel ssh e usar mysqldump
em sua máquina local.
ssh -f -L 3306:localhost:3306 user@remoteserver -N
mysqldump -P 3306 -h localhost -u dbuser dbname
Eu quero despejar o banco de dados no meu site hospedado remotamente em intervalos regulares usando um script de shell. Infelizmente o servidor está travado bem apertado, não tem mysqldump
instalado, arquivos binários não podem ser executados por usuários normais / em diretórios home (então eu não consigo "instalar" eu mesmo) e o banco de dados mora em um servidor separado , então não consigo pegar os arquivos diretamente.
A única coisa que posso fazer é entrar no servidor via SSH e estabelecer uma conexão com o servidor de banco de dados usando o cliente de linha de comando mysql
. Como posso despejar o conteúdo para um arquivo a la mysqldump
no formato SQL?
Bônus: Se possível, como posso descarregar o conteúdo diretamente no final da conexão SSH?
Eu gosto da ideia de túnel SSH proposta abaixo, no entanto, eu preciso dobrar o túnel.
localhost -> remote web server -> remote database server
Isso funciona bem:
$ ssh -f -L 3306:mysql.example.com:3306 [email protected] -N
No entanto, tentar efetuar login no mysql falha:
$ mysqldump -P 3306 -h localhost -u user -p db
Enter password:
mysqldump: Got error: 1045: Access denied for user 'user'@'localhost'
(using password: YES) when trying to connect
Eu acredito que as credenciais do usuário sejam 'user'@'mysql.example.com'
. Como posso persuadi-lo a usá-lo em vez do host "real"?
Ok, consegui que funcionasse adicionando 127.0.0.1 mysql.example.com
ao meu arquivo de hosts e conectando via mysqldump -P 3306 -h mysql.example.com -u user -p db
. Problema resolvido! Eu ainda estaria interessado em uma solução que não exige que eu edite o arquivo hosts.
link - você pode usar este script para backup de banco de dados depois de carregá-lo no servidor. Muito prático e rápido
Carregue este script no seu servidor web (espere que você tenha pelo menos acesso FTP), inicie-o, especifique o nome do banco de dados / host (endereço do seu "servidor separado") / nome de usuário / senha e banco de dados de despejo para qualquer local que você quiser ...
Se o seu servidor for um servidor da Web, você poderá usar um script PHP que despeje o banco de dados na tela. No seu servidor de backup, coloque um cron que wget a página de despejo. Em seguida, seu banco de dados é despejado em seu servidor de backup apenas por HTTP.
Não se esqueça da segurança: todos estão disponíveis para despejar sua base. Coloque uma senha ou uma limitação de IP ...