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

Guía para montar un maestro único en MySQL con Docker Compose y conectar Node.js/Sequelize para dirigir escrituras al maestro y lecturas a réplicas.

18 sept 2025 • 5 min read • Q2BSTUDIO Team

Inteligencia-Artificial-

Las aplicaciones modernas requieren alta disponibilidad y la capacidad de escalar lecturas sin sacrificar rendimiento. Una de las estrategias más habituales para lograrlo es la replicación. En este artículo explico cómo montar una replicación de líder único en MySQL de forma local usando Docker y cómo conectar ese clúster a una aplicación Nodejs con Sequelize para que las operaciones de escritura vayan al maestro y las lecturas se sirvan desde réplicas.

Resumen del objetivo: crear un entorno con un servidor MySQL principal que reciba todas las escrituras y tres réplicas que atiendan las lecturas, desplegado con Docker Compose, y luego integrar esa topología con un servidor Nodejs para observar la replicación en tiempo real.

Requisitos previos: conocimiento básico de replicación de bases de datos, experiencia con Docker y Docker Compose, y conocimientos básicos de Nodejs y cómo ejecutar un servidor Nodejs.

Configuración con Docker Compose: en la raíz del proyecto crea un archivo docker-compose.yml con la definición de un servicio mysql-master y tres servicios mysql-slave. Cada contenedor debe tener un server-id único y activado el log binario. Conceptualmente la sección de comandos para cada servicio incluye opciones como --server-id=n y --log-bin=ON. Es recomendable considerar también binlog_format=ROW para asegurar replicación basada en filas cuando sea necesario.

Arranque de los contenedores: ejecuta docker-compose up -d para levantar las instancias MySQL. A continuación configura el maestro y las réplicas desde la consola de cada contenedor.

Configuración del maestro: accede al contenedor maestro con docker exec -it mysql-master bash y dentro ejecuta el cliente MySQL con mysql -uroot -p. Crea un usuario de replicación y otórgale permisos con sentencias similares a CREATE USER repl_user@% IDENTIFIED BY replication_pass; GRANT REPLICATION SLAVE ON *.* TO repl_user@%; FLUSH PRIVILEGES;. Este usuario será usado por las réplicas para conectarse al maestro y recibir binlogs.

Configuración de las réplicas: para cada contenedor réplica entra con docker exec -it nombre_replicante bash y luego al cliente MySQL. Indica la fuente de replicación con una sentencia del estilo CHANGE REPLICATION SOURCE TO SOURCE_HOST=mysql-master, SOURCE_USER=repl_user, SOURCE_PASSWORD=replication_pass, GET_SOURCE_PUBLIC_KEY=1; y luego arranca la replicación con START REPLICA;. Comprueba el estado con SHOW REPLICA STATUS; y confirma que Replica_IO_Running y Replica_SQL_Running estén en Yes para verificar que la replicación está activa y sincronizada.

Buenas prácticas y detalles importantes: el parámetro server-id debe ser único por servidor. El log binario debe estar activado en el maestro. El formato de binlog puede ser ROW para mayor consistencia en ciertos escenarios. En entornos de producción se deben considerar backups consistentes, monitorización y un mecanismo de failover o reelección de líder, ya que bibliotecas ORM por defecto no gestionan la promoción automática de una réplica a maestro.

Integración con Nodejs y Sequelize: en el proyecto Node instala dependencias como express, mysql2 y sequelize. Configura Sequelize con el apartado replication para indicar la conexión de escritura y la lista de conexiones de lectura. Por ejemplo, la configuración especifica una conexión write apuntando al puerto 3306 del maestro con credenciales root y contraseña master y una lista read con réplicas en puertos 3307, 3308 y 3309 usando credenciales root y contraseña slave. Sequelize entonces enruta automáticamente INSERT y UPDATE al write y SELECT a una de las conexiones read disponibles.

Esquema de trabajo en la aplicación: crea un modelo User con campos name y email y monta rutas HTTP básicas. Al hacer POST en la ruta para crear usuarios la operación de inserción será enviada al maestro y, poco después, se replicará a las réplicas. Al hacer GET para listar usuarios la consulta SELECT será atendida por una réplica, permitiendo escalar lecturas sin sobrecargar el maestro.

Ejemplo de flujo de pruebas: realiza una petición POST al endpoint de usuario y verifica en tiempo real cómo el registro aparece primero en la base de datos del maestro y luego se propaga a las réplicas. Observa el estado de replicación con SHOW REPLICA STATUS; para ver offsets y posibles errores.

Limitaciones y siguiente pasos: usar Sequelize para routing de lectura/escritura funciona muy bien en desarrollo, pero en producción es necesario contemplar escenarios de fallo del maestro. Cuando el maestro cae se requiere un mecanismo de failover que promueva una réplica a líder y actualice las conexiones de las aplicaciones. En futuras entregas se pueden abordar estrategias de alta disponibilidad, consensus para elección de líder y orquestación con herramientas que automaticen la conmutación por error.

Sobre Q2BSTUDIO: en Q2BSTUDIO somos una empresa de desarrollo de software que ofrece aplicaciones a medida y software a medida para empresas de distintos sectores. Somos especialistas en inteligencia artificial, ciberseguridad y servicios cloud aws y azure, y acompañamos a nuestros clientes desde el diseño hasta la puesta en producción. Si necesita soluciones personalizadas para sus proyectos puede consultar nuestra página de desarrollo de aplicaciones y software a medida y también ofrecemos arquitectura y migración en servicios cloud aws y azure.

Palabras clave y servicios: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA y power bi. Si busca integrar inteligencia de negocio o reporting avanzado podemos ayudarle con proyectos de Business Intelligence y Power BI adaptados a su negocio.

Conclusión: montar una replicación de líder único en MySQL con Docker es una forma práctica de experimentar y validar patrones de escalado de lecturas. Integrada con Nodejs y Sequelize permite desarrollar aplicaciones que separan lecturas y escrituras y observar comportamiento de replicación en tiempo real. Para soluciones profesionales y proyectos productivos, Q2BSTUDIO aporta experiencia en desarrollo de software a medida, seguridad y despliegue en la nube para garantizar escalabilidad, resiliencia y cumplimiento de requisitos empresariales.

A BREAK?

Play for a moment before you go

OUR SERVICES

How we can help you

Artificial intelligence

AI agents, chatbots, and intelligent assistants that automate tasks and serve your customers 24/7 to improve the efficiency of your business.

More info

Software Development

Web, mobile, and desktop applications, intranets, e-commerce, SaaS, and management platforms designed for your company's specific needs.

More info

Cloud services

Migration, infrastructure, managed hosting, high availability, and security on Microsoft Azure and Amazon Web Services to help your business scale without limits.

More info

Cybersecurity and pentesting

Security audits, penetration testing and protection of applications, data and infrastructure on-premise and cloud, with ethical hacking and regulatory compliance.

More info

Business Intelligence

Dashboards and data analysis with Power BI: we integrate your sources, design dashboards and KPIs and turn your data into decisions.

More info

Process automation

We automate repetitive tasks and connect your applications with n8n, Power Automate, Make, and RPA, eliminating manual work and increasing productivity.

More info

Training for Companies

We train your teams in technology with criteria: web development, databases, Git, best practices and security, automation with n8n, artificial intelligence for companies and creation of AI solutions with Azure AI Foundry.

More info

Code Auditing

We audit the code that you, your team or an AI create: we tell you what is good and what to improve, we secure it and make it ready for production, web or app.

More info

AI Image Generation

We create for you the images that your business needs with artificial intelligence: product, networks, advertising, illustration and avatars. You tell us what you want and we deliver it ready to use.

More info

AI Video Generation

We create videos with artificial intelligence for you: promotional, networking, virtual presenters, dubbing and animations. You tell us the idea and we will deliver it assembled and ready to publish.

More info

AI Conversational Avatars

We create conversational avatars with AI – digital humans with a face and voice – that serve your customers and teams with the knowledge of your company, on your website, interactive monitors, WhatsApp or Teams.

More info

Online Marketing and AI

Google Ads, Meta Ads, LinkedIn Ads and AI Engine Positioning (GEO/AEO): we attract customers and make your brand appear where they search for you, also on ChatGPT, Gemini and Perplexity.

More info

Do you have a project in mind?

Tell us your vision and we'll turn it into a software solution. Whatever the scope, we make your idea real.

Live Chat