Replica bases de datos MySQL de forma sencilla con este manual

La replicación puede ser un proceso complejo. Hay que tener en cuenta que este se realiza para garantizar la disponibilidad de los datos en otra ubicación o bien hacer frente a posibles problemas de uno de los servidores. En este artículo os vamos a enseñar a realizar replicaciones de una base de datos MySQL de una forma sencilla pero igualmente válida.

El manual queda dividido en tres partes. En la primera aprenderemos cómo copiar la clave SSH generada por un usuario en un equipo a otro. Esto permitirá iniciar sesión SSH en otro sin la necesidad de introducir la contraseña asociada a esa cuenta. En la segunda parte hablaremos del script que debemos utilizar para realizar la copia de la base de datos. En último lugar y de forma opcional, modificaremos el cron para que el script se ejecute cada hora y se realice la replicación de forma automática.

Todo este manual se desarrollará haciendo uso de una terminal de Linux.

RedesZone no se responsabilizará de un uso inadecuado del manual ni de pérdidas de información.

Es recomendable que todo el manual se realice utilizando el usuario root, sobre todo para evitar problemas durante el uso de mysqldump.

Copia de la clave SSH en otro equipo

La finalidad de esto no es otra que permitir que el script haga login en el equipo remoto y transfiera la información obtenida del comando mysqldump que utilizaremos en el siguiente apartado.

En primer lugar, tendremos que ejecutar el siguiente comando:

ssh-keygen -t rsa

A coación realizará una serie de preguntas, comenzando por el fichero destino:

Enter file in which to save the key (/home/demo/.ssh/id_rsa):

Introducir la frase de cifrado. Si se desea se puede dejar vacía:

Enter passphrase (empty for no passphrase):

La salida generada será similar a la siguiente:

ssh-keygen -t rsa 
Generating public/private rsa key pair.
Enter file in which to save the key (/home/demo/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/demo/.ssh/id_rsa.
Your public key has been saved in /home/demo/.ssh/id_rsa.pub.
The key fingerprint is:
4a:dd:0a:c6:35:4e:3f:ed:27:38:8c:74:44:4d:93:67 demo@a
The key's randomart image is:
+--[ RSA 2048]----+
| .oo. |
| . o.E |
| + . o |
| . = = . |
| = S = . |
| o + = + |
| . o + o . |
| . o |
| |
+-----------------+

La clava está ubicada en /home/demo/.ssh/id_rsa.pub, tal y como hemos podido comprobar, aunque el usuario puede elegir otra ubicación. Es recomendable dejar esta para evitar problemas en la segunda parte del proceso.

Tenemos que copiar la clave al equipo remoto. Para realizar esta operación ejecutaremos el siguiente comando:

ssh-copy-id [email protected]

La salida ofrecida por este comando debería ser similar a esto:

The authenticity of host '12.34.56.78 (12.34.56.78)' can't be established. 
RSA key fingerprint is b1:2d:33:67:ce:35:4d:5f:f3:a8:cd:c0:c4:48:86:12.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '12.34.56.78' (RSA) to the list of known hosts.
[email protected]'s password:
Now try logging into the machine, with "ssh '[email protected]'", and check in:

~/.ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

En esta salida, el usuario deberá confirmar que quiere añadir la identidad e introducir las credenciales de login para la cuenta que se quiere utilizar en ese servicio.

Una vez completado este proceso, tendríamos que ser capaces de hacer inicie de sesión en este equipo sin introducir la contraseña:

ssh [email protected]

La primera parte de este manual la damos por zanjada y pasamos a la segunda.

Utilización de mysqldump y el inicio de sesión vía SSH

Continuamos con la segunda parte. Para ello nos vamos a ayudar del comando mysqldump pero con variaciones que nos permitirán trasladar de forma automática el dump a la base de datos del servidor remoto.

Antes de continuar, indicar que conviene utilizar un usuario que esté bien configurado en la base de datos. Hay que tener en cuenta que la contraseña de acceso a la base de datos la vamos a dejar en texto plano. De ahí que sea recomendable afinar los permisos que este usuario posea de cara a la lectura y escritura de datos.

El comando a utilizar sería el siguiente:

mysqldump -u usuarioDB -p'contraseñDB' nombreDB | ssh userRemoto@direcciónIPRemota mysql -u usuarioDBRemota -p'contraseñaDBRemota' nombreDBRemota 

Tal y como se puede observar, la pipe separa en dos el comando. En la primera parte lo que hacemos es un dump en formato texto de la base de datos escogida. Si no incluimos la segunda parte, podemos ver como la salida es el código SQL que genera la estructura de las tablas y la información ya existente. En la segunda parte, se recibe este texto, se inicia sesión en SSH, se hace login en MySQL y se selecciona la base de datos sobre la que se escribirán los datos.

Con este comando tendremos una réplica exacta de la base de datos seleccionada.

Configuración de la ejecución automática

Si queremos automatizar el proceso, recurriremos a la creación de un script y la edición de crontab de este usuario.

En primer lugar, crearemos un archivo:

nano replica.sh 

Dentro de este script escribiremos lo siguiente:

mysqldump -u usuarioDB -p'contraseñDB' nombreDB | ssh userRemoto@direcciónIPRemota mysql -u usuarioDBRemota -p'contraseñaDBRemota' nombreDBRemota 

Es decir, el comando que hemos ejecutado con anterioridad. Guardamos el archivo y modificamos sus permisos para que pueda ejecutarse:

chmod 700 replica.sh

Modificamos el crontab escribiendo:

crontab -e 

Añadimos la siguiente línea:

01 * * * * /el/directorio/de/nuestro/script/replica.sh 

Con este comando haremos que el script de replicación se ejecute el primer minuto de cada hora. La frecuencia elegida dependerá en este caso de las necesidades de cada usuario.

El proceso de replicación programada ya está finalizado. De esta forma podemos replicar bases de datos con muy poco esfuerzo y de forma programada.



Via: www.redeszone.net
Replica bases de datos MySQL de forma sencilla con este manual Replica bases de datos MySQL de forma sencilla con este manual Reviewed by Zion3R on 15:13 Rating: 5