POLITICA DE COOKIES

Q2BSTUDIO.COM utiliza cookies técnicas, analíticas, de sesión y de publicidad con la finalidad de prestar un mejor servicio. No obstante, necesitamos su consentimiento explícito para poder utilizarlas. Así mismo puede cambiar la configuración de las cookies u obtener más información aquí .

Replicación de líder único en MySQL con Node.js y Docker

Replicación de líder único con MySQL, Docker y Sequelize: escalando lecturas y enrutando escrituras

Publicado el 18/09/2025

Las aplicaciones modernas exigen alta disponibilidad y capacidad para escalar lecturas sin sacrificar rendimiento. Una estrategia habitual para conseguirlo es la replicación con un único líder que recibe todas las escrituras mientras varios réplicas atienden las lecturas. En este artículo explico cómo montar replicación de líder único en MySQL en local usando Docker y cómo conectar ese clúster a una aplicación Nodejs con Sequelize para que las lecturas se dirijan a réplicas y las escrituras al maestro.

Descripción general del entorno que construiremos: un contenedor mysql maestro y tres réplicas, orquestados con docker compose, y una pequeña API en Nodejs que muestra en tiempo real cómo Sequelize enruta operaciones de escritura al maestro y lecturas a los nodos esclavos.

Preparación y requisitos: conocimientos básicos de replicación de bases de datos, docker y docker compose, y Nodejs. También es recomendable experiencia con servicios cloud y seguridad si se va a trasladar a producción.

Archivo docker compose: en la raíz del proyecto cree un archivo docker-compose.yml que defina un servicio mysql-master y tres servicios mysql-slave. Cada instancia debe tener un server-id único y el registro binario activado para que la replicación funcione correctamente. En la práctica el parámetro clave es --server-id y opcionalmente binlog_format=ROW para forzar formato de binlog por filas.

Paso previo: levantar los contenedores con el comando docker-compose up -d y comprobar que los contenedores mysql-master y las tres réplicas están activos.

Configuración del maestro: acceder al contenedor maestro con docker exec -it mysql-master bash y luego ejecutar mysql -uroot -p para entrar al cliente MySQL. Crear un usuario de replicación con permisos adecuados para que las réplicas puedan conectarse. Por ejemplo ejecutar en MySQL las sentencias CREATE USER repl_user@% IDENTIFIED BY replication_pass; GRANT REPLICATION SLAVE ON *.* TO repl_user@%; FLUSH PRIVILEGES; Esto crea el usuario de réplica y le otorga permisos de replicación.

Configuración de las réplicas: en cada contenedor réplica acceder con docker exec -it nombre_contenedor bash y entrar al cliente MySQL con mysql -uroot -p. Configurar el origen de replicación indicando host, usuario y contraseña del maestro. Un ejemplo de sentencia sería CHANGE REPLICATION SOURCE TO SOURCE_HOST=mysql-master, SOURCE_USER=repl_user, SOURCE_PASSWORD=replication_pass, GET_SOURCE_PUBLIC_KEY=1; Después arrancar la replicación con START REPLICA; y verificar el estado con SHOW REPLICA STATUS; Comprobar que Replica_IO_Running y Replica_SQL_Running aparecen como Yes para confirmar que la réplica se está sincronizando.

Integración con Nodejs y Sequelize: en el proyecto Node instale dependencias con npm i express mysql2 sequelize e incluya una carpeta src con la lógica de conexión y modelos. La configuración de Sequelize para replicación incluye un bloque replication donde se especifica el write host que apunta al maestro y un arreglo read con los hosts de las réplicas. Por ejemplo indicar write host 127.0.0.1 puerto 3306 usuario root password master database replicaDb y en read tres nodos en 127.0.0.1 con puertos 3307 3308 3309 usuario root password slave database replicaDb.

Comportamiento esperado: cuando ejecute sequelize.sync y use modelos como User, todas las operaciones de INSERT UPDATE DELETE se enviarán al write connection que es el maestro, mientras que las consultas SELECT se balancearán entre los nodos de lectura. Esto permite escalar lecturas y observar la replicación en tiempo real al comprobar que los datos insertados en el maestro aparecen luego en las réplicas.

Ejemplo de endpoints: crear un POST /user que reciba name y email y haga new User y save para insertar en el maestro. Crear un GET /user que haga User.findAll para leer desde una réplica. Al realizar un POST después puede comprobar en las réplicas que los datos se han propagado.

Limitaciones y siguientes pasos: Sequelize gestiona el enrutado de lecturas y escrituras pero no implementa conmutación por error automática si el maestro cae. Para entornos productivos hay que añadir mecanismos de alta disponibilidad y election de líderes, backups, y monitorización. También conviene asegurar la comunicación entre nodos y aplicar prácticas de ciberseguridad y hardening.

En Q2BSTUDIO como empresa de desarrollo de software ofrecemos soporte para montar arquitecturas de replicación, despliegue en servicios cloud aws y azure y soluciones a medida para escalar bases de datos y aplicaciones. Si necesita una solución profesional para aplicaciones a medida y software a medida podemos ayudarle a diseñar, implementar y asegurar la infraestructura. Conozca nuestras soluciones de software a medida y aplicaciones multiplataforma y cómo adaptarlas a sus requisitos.

Además podemos integrar capacidades de inteligencia artificial y análisis con agentes IA y Power BI para obtener inteligencia de negocio a partir de sus datos. Si le interesa explorar opciones de automatización, seguridad y analítica, consulte nuestros servicios de inteligencia artificial para empresas y combine ello con auditorías de ciberseguridad, pentesting y despliegue en la nube. Palabras clave relevantes para este artículo: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA, power bi.

Resumen final: montar replicación maestro-replicas con Docker y MySQL permite escalar lecturas y ver replicación en tiempo real. Conectar ese clúster a una aplicación Nodejs mediante Sequelize facilita el enrutado de consultas. Para producción se recomiendan medidas adicionales de HA, monitoring, copias de seguridad y procedimientos de conmutación por error, áreas en las que Q2BSTUDIO puede acompañarle como partner tecnológico.

Fin del artículo, inicio de la diversión
Construyendo software juntos

Dando vida a tus ideas desde 2008

Diseñamos aplicaciones móviles y de escritorio innovadoras que cumplen con tus requisitos específicos y mejoran la eficiencia operativa.
Más info
Cuéntanos tu visión
Sea cual sea el alcance, podemos convertir tu idea en realidad. Envíanosla y charlemos sobre tu proyecto o una colaboración futura.
Contáctanos
artículos destacados
Live Chat
Enviado correctamente.

Gracias por confiar en Q2BStudio