nov 07 15

Replicación de bases de datos mysql (Parte 1)

Tiempo estimado de lectura: 2,22 minutos

A partir del mysql 5, es posible replicar servidores de bases de datos MySql, algo que no mucha gente usa por el hecho que no siempre se dispone del acceso a la administración de más de un servidor.

Esta serie de posts tiene como objetivos:

1) Dar a conocer esta extraordinaria funcionalidad de MySql
2) Comentar mi experiencia en un proyecto que utiliza 5 servidores de mysql replicados en diferentes ubicaciones geográficas.
3) Retomar este tipo de post didáctico que hace mucho abandoné por falta de tiempo.

Si ya leiste esta introducción o tenés conocimientos acerca de que se trata visita: “Caso práctico de replicación de bases de datos“ o “Solución de problemas comunes de replicación de BD MySql

Introducción a la replicación

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.

Es extremadamente útil cuando se trabaja con servidores en distintas ubicaciones geograficas y forman parte de un mismo sistema. También para realizar backups automáticamente y tener las mismas bases de datos disponibles todo el tiempo en diferentes servidores.

Esta funcionalidad se basa en un sistema cliente-servidor aunque mysql lo llama esclavo-maestro (slave-master). 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.

Toda esta operación se realiza de forma asíncrona. Es decir, no hace falta que la conexión entre el esclavo y el maestro este constantemente activa ya que el maestro sigue logueando en su log y el esclavo lo leerá y ejecutará desde la última posición registrada cuando detecte nuevamente la conexión. Claro está que si se da esta asincronía, el esclavo no este siempre actualizado, sino sólo después de leer la ultima posición del master. Si la conexión es permanente, los datos serán los mismos ya que la replicación es inmediata.

replicacion mysql

Podemos realizar tantas conexiones slave-master como sean necesario siempre y cuando un mismo slave no tenga 2 masters, esto generaría inconsistencias. Incluso es posible, aunque no recomendado si no se esta completamente seguro, que dos servidores sean slave-master entre ellos y viceversa siempre y cuando se filtren los datos a replicar, es decir, que lo que se replique desde el master al slave, no regrese. Si esto ocurriese, tendríamos una recursividad sin final pasando datos a diestra y siniestra.

Hablando desde mi experiencia, creo que la replicación es una forma muy fácil, rápida y económica de incrementar la escalabilidad de un sistema ya que si bien no funciona como cluster, podemos balancear la carga entre los n servidores que disponemos. Hay que aclarar que el número mínimo de servidores para un cluster es de 4 y que el cambio es significativamente grande ya que utiliza otro tipo de estructura MySql.
En los próximos posts, hablare de cómo configurar diferentes sistemas replicados con casos prácticos.

Disculpen si el artículo no salió claro y preciso, necesito retomar la práctica de redactar este tipo de post que suelen aportar algo a la comunidad.

Copame! Digg it Digg it Reddit Del.icio.us

    12 Comentarios

  1. marcoss


    Voto por el retorno de los posts educativos :D

  2. Lucas


    Si, un weblog luce mejor con cosas productivas… aunque lleven su tiempo :O

  3. Andres


    Muy buen artículo, me ha salvado la tarde. Felicidades a Lucas!!!

  4. eleZeta - Lucas Zallio » Blog Archive » Replicación de bases de datos mysql (Parte 3)


    [...] primero la parte 1: “Introducción a la replicación“ O ver la parte 2: “Caso práctico de replicación de bases de [...]

  5. eleZeta - Lucas Zallio » Blog Archive » Replicación de bases de datos mysql (Parte 2)


    [...] primero la parte 1: “Introducción a la replicación” o ve como solucionar problemas de replicación de [...]

  6. m3n50


    Muchaz graciaz.

  7. rafaexpo


    Me parece estupendo, gracias

  8. Netsky


    Oye mis respetos, es bueno encontrar blogs donde hay informacion util y clara…

  9. Replicar MySQL | hilpers


    [...] me dijeron que es sencillo; pero también se puede con versiones anteriores. Seguro esto te ayuda: http://ele-zeta.com.ar/2007/11/15/re…mysql-parte-1/ Saludos, Toote — To UNSUBSCRIBE, email to debian-user-spanish-REQUEST with a subject of [...]

  10. Saria


    Gracias por compartir conocimiento en verdar llevaba tiempo buscando algo como lo que has posteado me has salvado =)

  11. julian


    Buenas,
    te queria hacer una pregunta sobre algo que no me quedo claro.
    Yo necesito tener un servidor central donde alojar informacion de muchas sucursales.
    Osea, voy a tener 5 servidores de base de datos individuales, y cada uno de esos servidores tiene que replicar a un servidor central.
    Pero segun lo que leo aca es alrevez, osea, el master es el que envia la informacion al slave.
    No me quedo muy claro eso.

    Muchas Gracias

  12. Lucas Zallio


    Julian, el esclavo es quien lee la info de un master (no el master quien le envia la info). Por eso sería tu servidor central quien debe ser esclavo de los masters.

    Sin embargo, un esclavo no puede tener más de un master. Es decir tu server central no podría leer de más de un server.

    Para ese caso quizá te convendría hacer la sincronización de otra forma y no usando la replicación de Mysql.

    Saludos.

Deja un Comentario

Tags permitidos:

  • <a href="" title="">
  • <abbr title="">
  • <acronym title="">
  • <blockquote cite="">
  • <code>
  • <em>
  • <strong>