Quiero volcar la base de datos en mi sitio alojado de forma remota a intervalos regulares utilizando un script de shell. Lamentablemente, el servidor está bloqueado bastante apretado, no tiene mysqldump
instalado, los archivos binarios no pueden ser ejecutados por usuarios normales / en directorios de inicio (por lo que no puedo "instalarlo" yo mismo) y la base de datos vive en un servidor separado, así que No puedo tomar los archivos directamente.
Lo único que puedo hacer es iniciar sesión en el servidor web a través de SSH y establecer una conexión con el servidor de bases de datos utilizando el mysql
cliente de línea de comandos. ¿Cómo puedo volcar el contenido a un archivo a la mysqldump
en formato SQL?
Bonificación: si es posible, ¿cómo puedo volcar el contenido directamente a mi final de la conexión SSH?
Me gusta la idea del túnel SSH que se propone a continuación, sin embargo, necesitaría duplicarla.
localhost -> remote web server -> remote database server
Esto funciona bien:
$ ssh -f -L 3306:mysql.example.com:3306 [email protected] -N
Sin embargo, al intentar iniciar sesión en mysql falla:
$ 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
Supongo que espera que las credenciales del usuario sean 'user'@'mysql.example.com'
. ¿Cómo puedo convencerlo para que use eso en lugar del host "real"?
De acuerdo, lo hice funcionar agregando 127.0.0.1 mysql.example.com
a mi archivo de hosts y conectando a través de mysqldump -P 3306 -h mysql.example.com -u user -p db
. ¡Problema resuelto! Sin embargo, todavía estaría interesado en una solución que no requiera que edite el archivo de hosts.
'user'@'localhost'
además de'user'@'mysql.example.com'
en MySQL, en lugar de editar el archivo hosts.Respuestas:
Puede configurar un túnel ssh y usarlo
mysqldump
en su máquina local.fuente
http://sypex.net/en/ : puede usar este script para la copia de seguridad de la base de datos después de cargarlo en el servidor. Muy práctico y rápido
fuente
Cargue este script en su servidor web (espero que tenga al menos acceso FTP), inícielo, especifique el nombre / host de la base de datos (dirección de su "servidor separado") / nombre de usuario / contraseña y descargue la base de datos en la ubicación que desee ...
fuente
Si su servidor es un servidor web, puede usar un script PHP que vuelca la base de datos a la pantalla. En su servidor de respaldo, coloque un cron que wget la página de volcado. Luego, su base de datos se descarga a su servidor de respaldo solo por HTTP.
No olvides la seguridad: todos están disponibles para volcar tu base. Ponga una contraseña o una limitación de IP ...
fuente