Como descarregar o banco de dados remoto sem o mysqldump?

8

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.

    
por deceze 20.04.2010 / 10:48

4 respostas

15

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
    
por 20.04.2010 / 12:22
1

link - você pode usar este script para backup de banco de dados depois de carregá-lo no servidor. Muito prático e rápido

    
por 20.04.2010 / 11:59
0

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 ...

    
por 20.04.2010 / 11:52
0

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 ...

    
por 20.04.2010 / 17:28

Tags