5.6. Replicacion

5.6. Replicacion Dataprix Fri, 10/16/2009 - 11:00

La replicación es la copia sincronizada entre dos servidores de bases de datos de forma que cualquiera de los dos puede entregar los mismos resultados a sus clientes.

MySQL incluye la posibilidad de replicación con las siguientes características:

•    Funciona con el esquema maestro-esclavo: existe un servidor maestro que lleva el control central y uno o varios servidores esclavos que se mantienen sincronizados con el servidor maestro.

•    La réplica se realiza mediante un registro de los cambios realizados en la base de datos: no se realizan las copias de las bases de datos para mantenerlas sincronizadas, en su lugar se informa de las operaciones realizadas en el servidor maestro (insert, delete , update ...) para que las realicen a su vez los servidores esclavos.

•    No es posible realizar cambios en los servidores esclavos, son exclusivamente para consultas.

Este sencillo esquema permite la creación de replicas sin mayores complicaciones obteniendo los siguientes beneficios:

•    Se distribuye la carga de trabajo.

•    El sistema es redundante, por lo que en caso de desastre hay menos probabilidades de perder los datos.

•    Es posible realizar los respaldos de un esclavo sin interrumpir el trabajo del servidor maestro.

5.6.1. Preparacion previa

5.6.1. Preparacion previa Dataprix Fri, 10/16/2009 - 11:06

El equipo maestro debe tener acceso por red. Antes de realizar la configuración de los servidores maestro y esclavo es necesario realizar las siguientes tareas:

•    Asegurarse de que en ambos está instalada la misma versión de MySQL.

•    Asegurarse de que ninguno de los servidores atenderá peticiones durante el proceso de configuración.

•    Asegurarse de que las bases de datos del servidor maestro han sido copiadas manualmente en el servidor esclavo, de manera que en ambos se encuentre exactamente la misma información.

•    Asegurarse de que ambos atienden conexiones vía TCP/IP. Por seguridad, esta opción está desactivada por omisión. Para activarla se debe comentar la línea skip_networking en el archivo de configuración /etc/my.cnf

5.6.2. Configuracion del servidor maestro

5.6.2. Configuracion del servidor maestro Dataprix Fri, 10/16/2009 - 11:17

En el servidor maestro creamos una cuenta de usuario con permisos de replicación para autorizar, en el servidor maestro, al nuevo usuario para realizar réplicas:

mysql> grant replication slave
-> on *.*
-> to replicador@esclavo.empresa.com identified by ´secreto´;

Replicador es el nombre del nuevo usuario.

Esclavo.empresa.com es la dirección del servidor esclavo.

’Secreto’ es la contraseña.

 

El servidor maestro llevará un archivo de registro 'binlog' donde se registrarán todas las solicitudes de actualización que se realicen en las bases de datos. Para activar la creación de este archivo debemos editar el archivo /etc/my.cnf y agregar las siguientes líneas en la sección [mysqld]:

[mysqld]
log-bin
server-id = 1

El servidor maestro debe identificarse con un id, en este caso será el número 1. a continuación, reiniciamos el servidor:

/etc/init.d/mysql restart

Finalmente, consultamos el nombre del archivo 'binlog' y la posición de compensación (estos datos son necesarios para configurar el esclavo):


 

5.6.3. Configuracion del servidor esclavo

5.6.3. Configuracion del servidor esclavo Dataprix Fri, 10/16/2009 - 11:24

En el servidor esclavo, editamos el archivo /etc/my.cnf y agregamos, al igual que en el maestro, la activación del archivo 'binlog' y un identificador del servidor (que debe ser distinto del identificador del servidor maestro):

[mysqld]
log-bin
server-id = 2

Reiniciamos el servidor esclavo:

# /etc/init.d/mysql restart

Configuramos los datos del maestro en el servidor esclavo:.

mysql> change master to
-> master_host = ´maestro.empresa.com´,
-> master_user = ´replicador´,
-> master_password = ´secreto´,
-> master_log_file = ´maestro-log.001´,
-> master_log_pos = 76;

El último paso es iniciar el servidor esclavo:

mysql> start slave;

Y ya tendremos el servidor esclavo funcionando.