Transferir una base de datos mySQL a otro servidor a traves de SSH

 

Cuando necesitas transferir una base de datos entre 2 servidores, y las bases de datos pesan varios gigas, la mejor manera es hacerlo directamente de servidor a servidor utilizando SSH.

Para ello en primera instancia se debe accesar al servidor en donde reside la base de datos fuente.

$ ssh usuario@0.0.0.0

Donde usuario es el nombre de usuario con el que se quiere iniciar sesión (de Linux, no de la base de datos).
Dn donde 0.0.0.0 es la IP del servidor a donde se quiere conectar.

Una vez que se ha podido iniciar sesión, es conveniente probar la conectividad con el servidor destino.

$ ssh usuario2@0.0.0.2

Donde usuario2 es el nombre de usuario del servidor a donde se quiere transferir la base de datos
Donde 0.0.0.2 es el servidor destino

Si el inicio de sesión de servidor 1 a servidor 2 es correcto, entonces se procede a transferir la base de datos

$ mysqldump -v -u BDUSER1 -p'PASS1' BD1 | ssh LINUSR2@0.0.0.2 mysql -u BDUSER2 -p'PASS2' BD2

Donde BDUSER1 es el usuario de la base de datos de MySQL del servidor de origen.
Donde PASS1 es la clave de la base de datos del servidor de origen, debe estar entre comillas.
Donde BD1 es el nombre de la base de datos del servidor de origen.
Donde LINUSR2 es el nombre de usuario de Linux del servidor destino con el cual se hará la conexión por SSH.
Donde 0.0.0.2 es la IP del servidor destino.
Donde BDUSER2 es el usuario de la base de datos de MySQL del servidor destino.
Donde PASS2 es la clave de la base de datos del servidor destino, debe estar entre comillas.
Donde BD2 es el nombre de la base de datos del servidor destino.

¿Por qué se manda la contraseña de la base de datos si con solo poner el parámetro -p nos lo pregunta?
En efecto. Mandar sólo el parámetro ( -p ) de que la base de datos tiene contraseña, es más seguro ya que no se queda guardado en el historial de comandos. El problema es que para poder conectarnos por SSH, debemos indicar la contraseña de acceso, y causa conflicto si no se especifica una contraseña para la base de datos.
De esta manera, indicamos cual es la clave para para la base de datos MySQL, y nos deja el prompt para la contraseña para SSH.

Cuando comienza a transferir, veremos que nos muestra cada tabla:

-- Retrieving table structure for table LaTablaQueTranfiere...
-- Sending SELECT query...
-- Retrieving rows...

Author: angelinux

Desarrollador de páginas web desde el año 2000 y con experiencia en programación de sistemas para empresas desde el 2008; cofundador de CONSoluciones; autor del blog de software libre “Angelinux-slack”; docente en maestría en UPAV y fundador de la distribución Linux Falco que está en desarrollo para la Universidad Veracruzana.
Además, ponente, organizador de congreso, laborista social, impartidor de cursos de programación y servidores Linux, webmaster, y ex invitado en programa de televisión.

Deja un comentario