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 [email protected]
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 [email protected]
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 [email protected] 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...
1 Comentario
MySQL, Instalarlo en Linux (Debian, Ubuntu, Linux Mint) | Angelinux · 7 agosto, 2021 a las 18:21
[…] Otra cosa a tener en cuenta es cómo poder transferir una base de datos a otra directamente entre dos servidores. […]