AltaDisponibilidad
con
Por: Ing. Dennis Cohn Muroy
Agenda
Alta disponibilidad Replicacin DRBD Heartbeat Ruteando las consultas Mejoras esperadas
Alta Disponibilidad
Servicios siempre disponibles Tolerancia a Fallos Redundancia y Sistemas de reemplazo
Consideraciones
Puntos de Falla (Redundancia)
Factibilidad de eliminar nodos Hacer uso de equipos de respaldo
Tiempo
Prdida de transacciones
Replicacin
Replicar datos de un servidor MySQL (maestro) a otro (maestro / esclavo) Herramienta asncrona Usos
Escalar soluciones: distribuir carga. Seguridad de datos: backup a nivel de esclavos Distribucin de datos (grandes distancias)
Maestro Maestro
Insertar / modificar registros en ms de una instancia MySQL Datos replicados asncronamente Modos:
Activo Pasivo Activo Activo
Maestro Maestro: Configuracin
Pasos a aplicar a cada nodo:
Crear usuario con permiso de replicacin Editar /etc/my.cfg Indicar usuario a usar (CHANGE MASTER TO) Iniciar la funcin de escucha (start slave) Revisar los estados
log-bin binlog-do-db=<bd a replicar> binlog-ignore-db=<bd ignorar> server-id=<entero nico>
show master status\G; show slave status\G;
Activo / Pasivo
Activo
Pasivo
Activo / Activo
Activo
Activo
Agregando un nuevo nodo...
Anillo con 4 nodos
Qu hacer en caso de fallo?
Detectando nodo con problemas
Reconfigurando el anillo
Maestro Maestro: Recomendaciones
AUTO_INCREMENT:
auto_increment_increment auto_increment_offset
Considerar redundancia:
Recursos del nodo = suma recursos consumidos por cada nodo
MySQL Multi Master Replicator Manager (MMM)
Maestro Maestro NO distribuye INSERTs
Maestro Esclavo
Maestro: Solo escritura Esclavo: Solo lectura 1 Maestro, N Esclavos
Maestro Esclavo: Configuracin
Maestro: crear usuario; permiso de replicacin Maestro: /etc/my.cfg Maestro: Verificar estado Esclavo: /etc/my.cfg Esclavo: Indicar usuario a usar (CHANGE MASTER TO) Iniciar la funcin de escucha (start slave) Esclavo: Verificar estado
server-id=<entero nico> log-bin binlog-do-db=<bd a replicar> binlog-ignore-db=<bd ignorar>
server-id=<entero nico>
Maestro con un Esclavo
Maestro
Esclavo 1
Agregando un segundo esclavo
Maestro
Esclavo 2
Esclavo 1
En caso el maestro falle...
Maestro
Esclavo 2
Esclavo 1
Detectando la falla ...
Maestro
Esclavo 2
Esclavo 1
Promoviendo un Esclavo a Maestro
Maestro
Esclavo 2
Esclavo 1 Maestro
Maestro Esclavo: Recomendaciones
InnoDB en el maestro (transacciones) MyISAM en el esclavo (solo lectura) Separar: Relay logs archivos de datos
Pero se invierte MUCHO tiempo promoviendo un nuevo maestro.
DR:BD
Raid 1 a nivel de red Nodo primario / secundario Modos de trabajo:
Sncrono:
Escritura en disco = activo + pasivo Escritura en disco = activo
Asncrono:
Nodo Primario
Nodo Secundario
Cmo interactuar con la rplica en caso la base de datos primaria falle?
Heartbeat
Migracin de servicio + ip de un nodo a otro Comunicacin entre 2 nodos:
Estado de procesos en el otro nodo
Comunicacin normal
IPV
Nodo activo falla
IPV
Heartbeat detecta el fallo
IPV
Se redirige el trfico
IPV
Tiempo ... 5 segundos
IPV
Se restablece el nodo fallido
IPV
Inicia sincronizacin
IPV
A dnde debo remitir la consulta?
Ruteando las consultas
Maestro: Insert, Update, Delete Esclavo: Select Tipos
Enlazado con la aplicacin
Implementacin SQL Relay MySQL Proxy Tungsten
Transparente
Una posible solucin ...
IPV
Nodo Maestro
Esclavo 1
Esclavo 2
Esclavo n
Qu viene ms adelante?
Mejoras esperadas
Replicacin Master Master en anillo. Remover elementos del anillo con un solo comando Inclusin de un MySQL Heartbeat Auto recuperacin del relay log (CRASH) Agregar soporte semi sncrono (Google) MySQL 5.4 / MySQL 6.0
Referencias
High Performance MySQL Building Scalable Web Sites DR:BD [www.drbd.org] MySQL [www.mysql.com] MySQL Replication Features (Thalmann, Lars)
Gracias
Ing. Dennis Cohn Muroy [email protected] Follow me: @denniscm20