La
replicación de base de datos es una herramienta muy potente en el mundo de las
aplicaciones distribuidas. Sus aplicaciones en el mundo real son muy variadas.
Sin embargo, para que se pueda utilizar de forma correcta y funcione como
esperamos es importante conocer realmente cómo funciona y las diferentes
opciones que nos ofrece. Los beneficios o los entornos donde es aplicable la
replicación de bases de datos son los siguientes:
v Usuarios trabajando en ubicaciones geográficamente alejados
trabajando con sus propias copias locales de la base de datos.
v Entornos en los que se replica la base de datos principal
en una secundaria como copia de seguridad. En el caso que la primaria caiga, la
secundaria toma el control.
v En entornos en los que la carga de usuarios sea muy grande
para un sólo gestor, se pueden replicar las bases de datos en varios servidores
asignando a cada usuario un servidor. Balanceando de esta manera la carga
podremos aliviar a los gestores. Como observamos, los entornos son variados y comunes
en muchos casos. El problema reside en la configuración y la elección correcta
del tipo de replicación Modelo de Replicación Antes de empezar, vamos a
clarificar los conceptos y términos que se utilizan cuando hablamos de la
replicación.
La replicación es el proceso de copiar y mantener actualizados los datos en varios nodos de bases de datos ya sean estos persistentes o no. Éste usa un concepto donde existe un nodo amo o maestro (master) y otros sirvientes o esclavos (slaves).
La replicación de
discos y particiones es la respuesta a una parte importante de esas dos
acciones de mantenimiento. La replicación es el proceso mediante el cual se
genera una copia exacta de parte del sistema. Esa parte puede ser desde un
archivo hasta una carpeta, una partición, un disco o incluso varios discos.
La replicación es
útil para:
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.
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.
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 continue prestando servicio.
El Log Binario
El log binario es un archivo binario gestionado por el
servidor de base de datos en el que se registran todas las sentencias SQL de
modificación de datos o estructura.
En el caso de la replicación es importante saber que
cada servidor esclavo se conecta al servidor maestro y le solicita que le envíe
las sentencias registradas en los logs binarios a partir de una posición, para
ello, cada esclavo mantiene un archivo a modo de índice en donde registra la
posición actual de la replicación.
Gracias a esto,
podemos detener el esclavo (STOP SLAVE), que haya un corte de red, etc... De
manera que cuando se vuelva a iniciar la replicación (START SLAVE) o se
reestablezca la comunicación... Pase el tiempo que pase) el esclavo solicitará
al maestro todas las sentencias a ejecutar desde su estado actual y las irá
ejecutando secuencialmente de manera que en cuestión de segundos ambos
servidores tendrán las bases de datos con el mismo contenido y estructura.
Probando la
Replicación
1. En el servidor esclavo ejecute el comando SHOW
SLAVE STATUS y observe que el mensaje que le muestra es un mensaje que indica
que está esperando eventos del maestro...
2. Modifique algo en el maestro y verifique que
instantáneamente se replica en el esclavo.
3. Detenga el esclavo durante un tiempo, realice
cambios (cree tablas, modifique registros...) en el maestro e inicie el
esclavo. En cuestión de milisegundos ambas bases de datos deberían de ser
iguales.
No hay comentarios:
Publicar un comentario