Download - MySQL - Alta Disponibilidad

Transcript
Page 1: MySQL - Alta Disponibilidad

conAlta Disponibilidad

Por: Ing. Dennis Cohn Muroy

Page 2: MySQL - Alta Disponibilidad

Agenda

● Alta disponibilidad● Replicación● DRBD● Heartbeat● Ruteando las consultas● Mejoras esperadas

Page 3: MySQL - Alta Disponibilidad

Alta Disponibilidad

● Servicios siempre disponibles● Tolerancia a Fallos● Redundancia y Sistemas de reemplazo

Page 4: MySQL - Alta Disponibilidad

Consideraciones

● Puntos de Falla (Redundancia)● Factibilidad de eliminar nodos

● Tiempo● Hacer uso de equipos de respaldo

● Pérdida de transacciones

Page 5: MySQL - Alta Disponibilidad

Replicación

● Replicar datos de un servidor MySQL (maestro) a otro (maestro / esclavo)

● Herramienta asíncrona● Usos

● Escalar soluciones: distribuir carga.● Seguridad de datos: backup a nivel de esclavos● Distribución de datos (grandes distancias)

Page 6: MySQL - Alta Disponibilidad

Maestro – Maestro

● Insertar / modificar registros en más de una instancia MySQL

● Datos replicados asíncronamente● Modos:

● Activo – Pasivo ● Activo – Activo

Page 7: MySQL - Alta Disponibilidad

Maestro – Maestro: Configuración

Pasos a aplicar a cada nodo:

● Crear usuario con permiso de replicación

● Editar /etc/my.cfg

● Indicar usuario a usar (CHANGE MASTER TO)

● Iniciar la función de escucha (start slave)

● Revisar los estados● show master status\G;● show slave status\G;

log-bin

binlog-do-db=<bd a replicar>

binlog-ignore-db=<bd ignorar>

server-id=<entero único>

Page 8: MySQL - Alta Disponibilidad

Activo / Pasivo

Activo Pasivo

Page 9: MySQL - Alta Disponibilidad

Activo / Activo

Activo Activo

Page 10: MySQL - Alta Disponibilidad

Agregando un nuevo nodo...

Page 11: MySQL - Alta Disponibilidad

Anillo con 4 nodos

Page 12: MySQL - Alta Disponibilidad

¿Qué hacer en caso de fallo?

Page 13: MySQL - Alta Disponibilidad

Detectando nodo con problemas

Page 14: MySQL - Alta Disponibilidad

Reconfigurando el anillo

Page 15: MySQL - Alta Disponibilidad

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)

Page 16: MySQL - Alta Disponibilidad

Maestro – Maestro NO distribuye INSERTs

Page 17: MySQL - Alta Disponibilidad

Maestro – Esclavo

● Maestro: Solo escritura● Esclavo: Solo lectura

● 1 Maestro, N Esclavos

Page 18: MySQL - Alta Disponibilidad

Maestro – Esclavo: Configuración

● Maestro: crear usuario; permiso de replicación

● Maestro: /etc/my.cfg

● Maestro: Verificar estado

● Esclavo: /etc/my.cfg

● Esclavo: Indicar usuario a usar (CHANGE MASTER TO)

● Iniciar la función 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>

Page 19: MySQL - Alta Disponibilidad

Maestro con un Esclavo

Maestro

Esclavo 1

Page 20: MySQL - Alta Disponibilidad

Agregando un segundo esclavo

Maestro

Esclavo 1Esclavo 2

Page 21: MySQL - Alta Disponibilidad

En caso el maestro falle...

Maestro

Esclavo 1Esclavo 2

Page 22: MySQL - Alta Disponibilidad

Detectando la falla ...

Maestro

Esclavo 1Esclavo 2

Page 23: MySQL - Alta Disponibilidad

Promoviendo un Esclavo a Maestro

Maestro

Esclavo 1Maestro

Esclavo 2

Page 24: MySQL - Alta Disponibilidad

Maestro – Esclavo: Recomendaciones

● InnoDB en el maestro (transacciones)● MyISAM en el esclavo (solo lectura)● Separar: Relay logs – archivos de datos

Page 25: MySQL - Alta Disponibilidad

Pero se invierte MUCHO tiempo promoviendo un nuevo maestro.

Page 26: MySQL - Alta Disponibilidad

DR:BD

● Raid 1 a nivel de red● Nodo primario / secundario● Modos de trabajo:

● Síncrono: – Escritura en disco = activo + pasivo

● Asíncrono: – Escritura en disco = activo

Page 27: MySQL - Alta Disponibilidad

Nodo Primario Nodo Secundario

Page 28: MySQL - Alta Disponibilidad

¿Cómo interactuar con la réplica en caso la base de datos primaria falle?

Page 29: MySQL - Alta Disponibilidad

Heartbeat

● Migración de servicio + ip de un nodo a otro

● Comunicación entre 2 nodos:● Estado de procesos en el otro nodo

Page 30: MySQL - Alta Disponibilidad

Comunicación normal

IPV

Page 31: MySQL - Alta Disponibilidad

Nodo activo falla

IPV

Page 32: MySQL - Alta Disponibilidad

Heartbeat detecta el fallo

IPV

Page 33: MySQL - Alta Disponibilidad

Se redirige el tráfico

IPV

Page 34: MySQL - Alta Disponibilidad

Tiempo ... 5 segundos

IPV

Page 35: MySQL - Alta Disponibilidad

Se restablece el nodo fallido

IPV

Page 36: MySQL - Alta Disponibilidad

Inicia sincronización

IPV

Page 37: MySQL - Alta Disponibilidad

¿A dónde debo remitir la consulta?

Page 38: MySQL - Alta Disponibilidad

Ruteando las consultas

● Maestro: Insert, Update, Delete● Esclavo: Select● Tipos

● Enlazado con la aplicación– Implementación– SQL Relay

● Transparente– MySQL Proxy– Tungsten

Page 39: MySQL - Alta Disponibilidad

Una posible solución ...

Page 40: MySQL - Alta Disponibilidad

IPV

“Nodo” Maestro

Esclavo 1 Esclavo 2 Esclavo n

Page 41: MySQL - Alta Disponibilidad

¿Qué viene más adelante?

Page 42: MySQL - Alta Disponibilidad

Mejoras esperadas

● Replicación Master – Master en anillo. Remover elementos del anillo con un solo comando

● Inclusión de un MySQL Heartbeat● Auto recuperación del relay log (CRASH)● Agregar soporte semi – síncrono (Google)

● MySQL 5.4 / MySQL 6.0

Page 43: MySQL - Alta Disponibilidad

Referencias

● High Performance MySQL● Building Scalable Web Sites● DR:BD [www.drbd.org]● MySQL [www.mysql.com]● MySQL Replication Features

(Thalmann, Lars)

Page 44: MySQL - Alta Disponibilidad

Gracias

Ing. Dennis Cohn [email protected] me: @denniscm20