Replicación de BD en MySQL para Windows

Las capacidades de replicación que permiten a las bases de datos de un servidor MySQL ser duplicadas en otro se introdujeron en MySQL 3.23.15. Las características de MySQL 5 soportan replicación asíncrona unidireccional: un servidor actúa como maestro y uno o más actúan como esclavos. (Esto contrasta con la replicación síncrona que es una característica de MySQL Cluster). Un esclavo servidor puede servir como maestro si quiere preparar una cadena de replicaciones de replicación.

De forma muy sencilla podemos decir que la replicación de bases de datos es una funcionalidad que permite que toda acción realizada a un servidor de base de datos se replique automáticamente en otro servidor. Bajo este concepto, cualquier insert, update, delete, optimize o cualquier otra consulta que modifique la base de datos en cuestión, se ejecutará de la misma forma en el servidor replicado.

Esta funcionalidad se basa en un sistema slave-master lo que es igual a referirse a un sistema cliente-servidor. Funcionalmente es el servidor esclavo quien lee y ejecuta todas las instrucciones que un maestro ejecutó. Estas instrucciones son registradas en un log binario en el maestro y el esclavo mantiene un log de las posiciones que ya leyó y ejecutó del maestro.


La replicación unidireccional tiene beneficios para la robustez, velocidad, y administración del sistema:

  • La robustez se incrementa con un escenario maestro/esclavo. En caso de problemas con el maestro, puede cambiar al esclavo como copia de seguridad.

  • Puede conseguirse un mejor tiempo de respuesta dividiendo la carga de consultas de clientes a procesar entre los servidores maestro y esclavo. Se puede enviar consultas SELECT al esclavo para reducir la carga de proceso de conultas del maestro. Sin embargo, las sentencias que modifican datos deben enviarse siempre al maestro, de forma que el maestro y el esclavo no se desincronicen. Esta estrategia de balanceo de carga es efectiva si dominan consultas que no actualizan datos, pero este es el caso más habitual.

  • Otro beneficio de usar replicación es que puede realizar copias de seguridad usando un servidor esclavo sin molestar al maestro. El maestro continúa procesando actualizaciones mientras se realiza la copia de seguridad.

La replicación es útil para:

  1. Copia de seguridad

  • En condiciones normales, una base de datos replicada de forma correcta es válida como copia de seguridad.

  • Además se puede realizar copias de seguridad usando un servidor esclavo para así no interferir al servidor maestro.

  1. Mejorar la escalabilidad
  • Podríamos configurar nuestras aplicaciones para balancear las consultas de lectura (SELECT) entre los servidores replicados.

  • Podríamos usar herramientas como MySQL Proxy para balancear las consultas de lectura entre los servidores replicados y enviar las consultas de actualización de datos al maestro.

  1. Alta disponibilidad

  • En aplicaciones y entornos en donde sólo se requieren lecturas, podríamos configurar nuestras aplicaciones para balancear las consultas de lectura (SELECT) entre los servidores replicados de manera que si uno se cae se continué prestando servicio.

Pasos para poner en marcha la replicación

A continuación vamos a exponer los pasos a realizar la replicación de una base de datos en un único servidor esclavo. Si quisieramos configurar más esclavos, los pasos a realizar serían los mismos sobre cada uno de los esclavos.

Es necesario que las versiones de MySQL instalado en el maestro y en el esclavo son compatibles ,es decir, similar versión. Idealmente, debe usar la versión más reciente de MySQL en maestro y servidor.

Creamos un usuario MySQL en el servidor maestro con privilegios de replicación, el servidor esclavo se autenticará frente al servidor maestro como un usuario normal.

Para crear el usuario debemos ejecutar desde la consola de comandos de mysql las siguientes sentencias SQL:

CREATE USER ‘<replication_user>’@'<slave_address>’ IDENTIFIED BY ‘<replication_user_password>’

GRANT REPLICATION SLAVE ON *.* TO ‘<replication_user>’@'<slave_address>

Con la sentencia anterior el usuario sólo tendría permiso de acceso desde la máquina <slave_address>, en caso de no requerir esta medida de seguridad puedes sustituir el comodin % por el parámetro <slave_address>.

Configuración del servidor maestro

Deberemos agregar las siguientes lineas al final del archivo de configuración del servidor MySQL, por defecto: <MySQL_HOME>/my.ini


# Identificador único del servidor MySQL dentro de todos los servidores implicados en la replicación.

server-id=1


# Al especificar el parámetro log-bin estamos activando el log binario.

# No especificamos un valor para el parámetro de configuración (por defecto será <nombre_maquina>-bin).

log-bin=


# El log binario sólo tendrá las actualizaciones realizadas sobre la base de datos “bd_autentia”

# Si además quisieramos replicar otras bases de datos, duplicariamos este parámetro para cada base de datos.

binlog-do-db=<data_base>

Configuración del servidor esclavo

Deberemos agregar las siguientes lineas al final del archivo de configuración del servidor MySQL, por defecto: <MySQL_HOME>/my.ini


# Identificador único del servidor MySQL dentro de todos los servidores implicados en la replicación.

server-id=2


# Nombre del archivo binario que almacena las instrucciones pendientes de ejecutar, por defecto: <host_name>-relay-bin.index

relay-log=


# Nombre o dirección IP del maestro.

master-host=<master_address>


# El esclavo se conecta a través de un usuario al maestro. Identificador del usuario

master-user=<replication_user>


# El esclavo se conecta a través de un usuario al maestro. Contraseña del usuario

master-password=<replication_user_password>


# Número de segundos que esperará el esclavo para reintentar conectarse al maestro en caso de una perdida de conexión.

master-connect-retry=50


# Número de reintentos de reconexión

master-retry-count=5000


Por ultimo realice una copia de seguridad de la base de datos del maestro y restaurala en el esclavo, luego detienes ambos servidores (esclavo y maestro) y luego inicias el esclavo y luego el maestro.

Referencias: http://www.autentia.com/ , Manual de referencia Mysql5.0


Anuncios

Acerca de tihuilo

Estudiante de Ing. en Sistemas y Computación
Esta entrada fue publicada en Bases de datos, Redes de datos. Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s