Quero despejar o banco de dados no meu site hospedado remotamente em intervalos regulares usando um script de shell. Infelizmente, o servidor está bloqueado, não há mysqldump
arquivos instalados, os arquivos binários não podem ser executados por usuários normais / em diretórios pessoais (por isso não consigo "instalá-lo") e o banco de dados fica em um servidor separado. não pode pegar os arquivos diretamente.
A única coisa que posso fazer é efetuar login no servidor da web via SSH e estabelecer uma conexão com o servidor de banco de dados usando o mysql
cliente de linha de comando. Como posso despejar o conteúdo para um arquivo à la mysqldump
no formato SQL?
Bônus: se possível, como posso despejar o conteúdo diretamente no final da conexão SSH?
Eu gosto da idéia do túnel SSH proposta abaixo, no entanto, eu precisaria 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, a tentativa de 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 acho que espera que as credenciais do usuário sejam 'user'@'mysql.example.com'
. Como posso convencê-lo a usá-lo em vez do host "real"?
Ok, eu consegui trabalhar 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 exija a edição do arquivo hosts.
'user'@'localhost'
além'user'@'mysql.example.com'
do MySQL, em vez de editar o arquivo hosts.Respostas:
Você pode definir um túnel ssh e usar
mysqldump
em sua máquina local.fonte
http://sypex.net/en/ - você pode usar esse script para fazer backup do banco de dados após fazer o upload para o servidor. Muito prático e rápido
fonte
Carregue este script no seu servidor web (espero que você tenha pelo menos acesso FTP), inicie-o, especifique o nome / host do banco de dados (endereço do seu "servidor separado") / nome de usuário / senha e despeje o banco de dados em qualquer local que desejar ...
fonte
Se o seu servidor for um servidor Web, você pode usar um script PHP que despeja 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 no 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 ...
fonte