Cómo configurar replicación en MySQL para alta disponibilidad
La replicación mantiene una o más réplicas que copian los cambios de un servidor primario. Sirve para tolerancia a fallos, lecturas escaladas y respaldos sin impactar producción. En MySQL 8.0 lo recomendado es usar replicación basada en GTID por su robustez ante failover.
- 1
Prepara el servidor primario
Activa el binlog, GTID y un server_id único. Estos parámetros van en my.cnf y requieren reinicio.
[mysqld] server_id = 1 log_bin = mysql-bin gtid_mode = ON enforce_gtid_consistency = ON - 2
Crea el usuario de replicación en el primario
La réplica se conecta con este usuario. Solo necesita el permiso REPLICATION SLAVE.
CREATE USER 'repl'@'10.0.%.%' IDENTIFIED BY 'clave_repl_fuerte'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'10.0.%.%'; - 3
Configura la réplica y arráncala
Con GTID no necesitas anotar posiciones de binlog: MASTER_AUTO_POSITION se encarga. Antes debes sembrar la réplica con una copia consistente del primario.
CHANGE REPLICATION SOURCE TO SOURCE_HOST = '10.0.0.1', SOURCE_USER = 'repl', SOURCE_PASSWORD = 'clave_repl_fuerte', SOURCE_AUTO_POSITION = 1; START REPLICA; - 4
Verifica el estado de la réplica
Ambos hilos deben decir Yes y Seconds_Behind_Source debe estar en 0 o cerca. Cualquier error aparece en Last_Error.
SHOW REPLICA STATUS\G
// el error común
La replicación NO es un respaldo: si borras datos por error en el primario, ese DELETE se replica al instante a la réplica. Además, la replicación asíncrona puede perder las últimas transacciones si el primario cae; para cero pérdida necesitas replicación semisíncrona o un clúster de grupo.
// cuándo conviene un experto
Diseñar alta disponibilidad real (failover automático, sin pérdida de datos, split-brain controlado) tiene muchos detalles finos. En dba.mx implementamos topologías con failover probado y monitoreo, con techo cerrado.
Agenda un Escaneo — desde USD $550Esta guía es orientativa y usa comandos de referencia. En producción, adapta a tu versión y prueba en un ambiente seguro primero.