By | 31 octubre, 2012

Tengo un servidor en producción por allá en la nube y quiero tener otra réplica (asincrónica) de algunas bases de datos MySQL. Buscando la solución más sencilla y rápida llegue a este script que se ejecuta en el servidor de réplica y que trae la base de datos remota y la deja activa en el MySQL local.

ssh shelluser@server.remoto.com «mysqldump -uusuario -pclave123 basedatos | gzip -c1» | gunzip -c | mysql -uroot -ppassword basedatos

Los comandos ente comillas mysqldump -uusuario -pclave123 basedatos | gzip -c1 se ejecutan en el servidor remoto mediante la conexión ssh que debe poder realizar el usuario ‘shelluser’, para sacar por estándar output el dump compactado de la base de datos.

Localmente se recibe por estandar input con los comandos gunzip -c | mysql -uroot -ppassword basedatos, que descomprimen y ejecutan los comandos del dump en el mysql local contra la base de datos que se indica.

El gzip y el gunzip es opcional y lo que busca hacer es comprimir el tráfico que se transfiere mediante SSH, y solo sería necesario si la base que se está bajando es de cierto volumen.

2 Replies to “Copiar base de datos MySQL de un servidor a otro”

  1. Pingback: Bitacoras.com

  2. Rodolfo Pilas

    Al final de cuentas siempre lo termino utilizando al revés de como lo escribí en el artículo.

    En el artículo, desde el server destino conecto para bajar del server origen la base de datos. Pero siempre termino haciéndolo al contrario, es decir, desde el server origen envio al server destino.

    Es fácil darse cuenta cómo es la sintaxis, pero para que sea más pintar y pegar, aqui va:

    mysqldump -uusuario -pclave123 basedatos | gzip -c1 | ssh shelluser@server.remoto.com «gunzip -c | mysql -uroot -ppassword basedatos»

    Suerte!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *