DBAtlas · Atlas de operaciones de bases de datos

MySQL InnoDB Cluster (Group Replication + MySQL Router)

MySQLNivel: AvanzadoDuración: 90–120 min

Monta un InnoDB Cluster single-primary a partir de 3 (o 5–9) servidores MySQL ya instalados en el mismo centro de datos: dba.configureInstance, createCluster y addInstance con clone mediante MySQL Shell AdminAPI; bootstrap de MySQL Router (6446 RW / 6447 RO), supervisión con cluster.status(), prueba de failover y runbooks de pérdida de quorum, caída completa y rolling restart. Al final obtiene un cluster que hace failover por sí solo cuando cae el primary y al que la aplicación se conecta a través de Router. Para un sitio remoto o un escalado de lecturas sencillo se usa la replicación clásica; para la operación diaria del cluster instalado, la guía de operación de InnoDB Cluster.

Topología: 3–9 nodos MySQL + 1 servidor de Router

Antes de empezar

  • En todos los nodos está instalado MySQL … con la misma versión menor (guía Instalación de MySQL en un servidor de DBAtlas), GTID activado y un server_id distinto en cada nodo. El root del sistema operativo puede conectarse sin contraseña con mysql.
  • En los nodos 2..… no hay datos que conservar: al añadirlos al cluster se toma con clone una copia del nodo 1 (…) y se borran sus datos existentes.
  • Todas las tablas del nodo 1 son InnoDB y tienen primary key (requisito de Group Replication). La consulta de comprobación debe devolver vacío.
  • Los nodos se alcanzan entre sí por los puertos 3306 (MySQL y comunicación de Group Replication), 33060 (X Protocol) y 33061; el servidor de Router alcanza los nodos por 3306/33060. Latencia baja (mismo centro de datos; < 1–2 ms).
  • Relojes sincronizados (chrony).
  • Número impar de nodos (…): … nodos toleran como máximo la pérdida de … nodos. Un número par no aporta tolerancia adicional.
  • Hay preparada una contraseña segura para la cuenta de administración del cluster (…) (al menos 8 caracteres, mayúsculas/minúsculas, dígitos, caracteres especiales). MySQL Shell y Router piden la contraseña en los pasos sin mostrarla en pantalla; se indica a Shell que no la guarde.
  • El servidor de Router puede acceder a repo.mysql.com (el repositorio de MySQL se agregará en esta guía).

Fases de la guía

  • Preparación (todos los nodos MySQL) — Abrir los puertos del cluster en el firewall · Registrar el puerto de Group Replication en SELinux · Agregar la configuración del cluster (…) · Reiniciar MySQL · Instalar MySQL Shell
  • Configuración de las instancias (dba.configureInstance) — Crear la cuenta de administración del cluster (…) · Validar las instancias de forma remota
  • Crear el cluster — Crear el cluster · Añadir el nodo al cluster (…) · Comprobar el estado del cluster
  • MySQL Router — Agregar el repositorio de MySQL (servidor de Router) · Instalar Router y Shell · Hacer el bootstrap de Router · Iniciar el servicio de Router · Abrir los puertos de Router en el firewall · Probar la conexión a través de Router
  • Verificación y supervisión — Estado detallado · Supervisar los miembros con SQL
  • Prueba de failover — Failover: detener el primary · Failover: detener el primary · Failover: ver el nuevo primary · Failover: ver el nuevo primary · Failover: ¿redirige Router al nuevo primary? · Failover: ¿redirige Router al nuevo primary? …
  • Pérdida de quorum y caída completa — Quorum: diagnosticar el estado · Quorum: diagnosticar el estado · Quorum: forzar el quorum con la partición que sigue en pie · Quorum: forzar el quorum con la partición que sigue en pie · Quorum: detener el grupo antiguo en el nodo que vuelve (…) · Quorum: detener el grupo antiguo en el nodo que vuelve (…) …
  • Rolling restart (mantenimiento) — Rolling: reiniciar el secondary (…) · Rolling: reiniciar el secondary (…) · Rolling: traspasar el rol de primary · Rolling: traspasar el rol de primary · Rolling: reiniciar el antiguo primary · Rolling: reiniciar el antiguo primary …
Abrir el plan paso a paso para su entorno →