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.
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.










12 Comentarios
marcoss
noviembre 15th, 2007 at 6:59 pm
Voto por el retorno de los posts educativos :D
Lucas
noviembre 15th, 2007 at 7:59 pm
Si, un weblog luce mejor con cosas productivas… aunque lleven su tiempo :O
Andres
enero 30th, 2008 at 4:42 am
Muy buen artÃculo, me ha salvado la tarde. Felicidades a Lucas!!!
eleZeta - Lucas Zallio » Blog Archive » Replicación de bases de datos mysql (Parte 3)
febrero 17th, 2008 at 9:48 pm
[...] primero la parte 1: “Introducción a la replicación“ O ver la parte 2: “Caso práctico de replicación de bases de [...]
eleZeta - Lucas Zallio » Blog Archive » Replicación de bases de datos mysql (Parte 2)
febrero 17th, 2008 at 9:48 pm
[...] primero la parte 1: “Introducción a la replicación” o ve como solucionar problemas de replicación de [...]
m3n50
abril 19th, 2008 at 5:40 pm
Muchaz graciaz.
rafaexpo
mayo 8th, 2008 at 9:48 pm
Me parece estupendo, gracias
Netsky
noviembre 28th, 2008 at 1:53 am
Oye mis respetos, es bueno encontrar blogs donde hay informacion util y clara…
Replicar MySQL | hilpers
enero 18th, 2009 at 8:33 am
[...] 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 [...]
Saria
septiembre 15th, 2009 at 8:46 pm
Gracias por compartir conocimiento en verdar llevaba tiempo buscando algo como lo que has posteado me has salvado =)
julian
noviembre 8th, 2011 at 7:11 pm
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
Lucas Zallio
noviembre 8th, 2011 at 7:35 pm
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.