alta disponibilidad con mysql
DESCRIPTION
Este archivo fue presentado en el Linux Week 2010 en la Pontificia Universidad Católica del Perú. Muestra una posible solución para resolver los problemas relacionados con la alta disponibilidad de Bases de Datos MySQLTRANSCRIPT
![Page 1: Alta disponibilidad con MySQL](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559849441a28ab48168b47ce/html5/thumbnails/1.jpg)
conAlta Disponibilidad
Por: Ing. Dennis Cohn Muroy
![Page 2: Alta disponibilidad con MySQL](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559849441a28ab48168b47ce/html5/thumbnails/2.jpg)
Agenda
● Alta disponibilidad● Replicación● DRBD● Heartbeat● Ruteando las consultas● Mejoras esperadas
![Page 3: Alta disponibilidad con MySQL](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559849441a28ab48168b47ce/html5/thumbnails/3.jpg)
Alta Disponibilidad
● Servicios siempre disponibles● Tolerancia a Fallos● Redundancia y Sistemas de reemplazo
![Page 4: Alta disponibilidad con MySQL](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559849441a28ab48168b47ce/html5/thumbnails/4.jpg)
Consideraciones
● Puntos de Falla (Redundancia)● Factibilidad de eliminar nodos
● Tiempo● Hacer uso de equipos de respaldo
● Pérdida de transacciones
![Page 5: Alta disponibilidad con MySQL](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559849441a28ab48168b47ce/html5/thumbnails/5.jpg)
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: Alta disponibilidad con MySQL](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559849441a28ab48168b47ce/html5/thumbnails/6.jpg)
Maestro – Maestro
● Insertar / modificar registros en más de una instancia MySQL
● Datos replicados asíncronamente● Modos:
● Activo – Pasivo ● Activo – Activo
![Page 7: Alta disponibilidad con MySQL](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559849441a28ab48168b47ce/html5/thumbnails/7.jpg)
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: Alta disponibilidad con MySQL](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559849441a28ab48168b47ce/html5/thumbnails/8.jpg)
Activo / Pasivo
Activo Pasivo
![Page 9: Alta disponibilidad con MySQL](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559849441a28ab48168b47ce/html5/thumbnails/9.jpg)
Activo / Activo
Activo Activo
![Page 10: Alta disponibilidad con MySQL](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559849441a28ab48168b47ce/html5/thumbnails/10.jpg)
Agregando un nuevo nodo...
![Page 11: Alta disponibilidad con MySQL](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559849441a28ab48168b47ce/html5/thumbnails/11.jpg)
Anillo con 4 nodos
![Page 12: Alta disponibilidad con MySQL](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559849441a28ab48168b47ce/html5/thumbnails/12.jpg)
¿Qué hacer en caso de fallo?
![Page 13: Alta disponibilidad con MySQL](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559849441a28ab48168b47ce/html5/thumbnails/13.jpg)
Detectando nodo con problemas
![Page 14: Alta disponibilidad con MySQL](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559849441a28ab48168b47ce/html5/thumbnails/14.jpg)
Reconfigurando el anillo
![Page 15: Alta disponibilidad con MySQL](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559849441a28ab48168b47ce/html5/thumbnails/15.jpg)
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: Alta disponibilidad con MySQL](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559849441a28ab48168b47ce/html5/thumbnails/16.jpg)
Maestro – Maestro NO distribuye INSERTs
![Page 17: Alta disponibilidad con MySQL](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559849441a28ab48168b47ce/html5/thumbnails/17.jpg)
Maestro – Esclavo
● Maestro: Solo escritura● Esclavo: Solo lectura
● 1 Maestro, N Esclavos
![Page 18: Alta disponibilidad con MySQL](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559849441a28ab48168b47ce/html5/thumbnails/18.jpg)
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: Alta disponibilidad con MySQL](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559849441a28ab48168b47ce/html5/thumbnails/19.jpg)
Maestro con un Esclavo
Maestro
Esclavo 1
![Page 20: Alta disponibilidad con MySQL](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559849441a28ab48168b47ce/html5/thumbnails/20.jpg)
Agregando un segundo esclavo
Maestro
Esclavo 1Esclavo 2
![Page 21: Alta disponibilidad con MySQL](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559849441a28ab48168b47ce/html5/thumbnails/21.jpg)
En caso el maestro falle...
Maestro
Esclavo 1Esclavo 2
![Page 22: Alta disponibilidad con MySQL](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559849441a28ab48168b47ce/html5/thumbnails/22.jpg)
Detectando la falla ...
Maestro
Esclavo 1Esclavo 2
![Page 23: Alta disponibilidad con MySQL](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559849441a28ab48168b47ce/html5/thumbnails/23.jpg)
Promoviendo un Esclavo a Maestro
Maestro
Esclavo 1Maestro
Esclavo 2
![Page 24: Alta disponibilidad con MySQL](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559849441a28ab48168b47ce/html5/thumbnails/24.jpg)
Maestro – Esclavo: Recomendaciones
● InnoDB en el maestro (transacciones)● MyISAM en el esclavo (solo lectura)● Separar: Relay logs – archivos de datos
![Page 25: Alta disponibilidad con MySQL](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559849441a28ab48168b47ce/html5/thumbnails/25.jpg)
Pero se invierte MUCHO tiempo promoviendo un nuevo maestro.
![Page 26: Alta disponibilidad con MySQL](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559849441a28ab48168b47ce/html5/thumbnails/26.jpg)
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: Alta disponibilidad con MySQL](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559849441a28ab48168b47ce/html5/thumbnails/27.jpg)
Nodo Primario Nodo Secundario
![Page 28: Alta disponibilidad con MySQL](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559849441a28ab48168b47ce/html5/thumbnails/28.jpg)
¿Cómo interactuar con la réplica en caso la base de datos primaria falle?
![Page 29: Alta disponibilidad con MySQL](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559849441a28ab48168b47ce/html5/thumbnails/29.jpg)
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: Alta disponibilidad con MySQL](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559849441a28ab48168b47ce/html5/thumbnails/30.jpg)
Comunicación normal
IPV
![Page 31: Alta disponibilidad con MySQL](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559849441a28ab48168b47ce/html5/thumbnails/31.jpg)
Nodo activo falla
IPV
![Page 32: Alta disponibilidad con MySQL](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559849441a28ab48168b47ce/html5/thumbnails/32.jpg)
Heartbeat detecta el fallo
IPV
![Page 33: Alta disponibilidad con MySQL](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559849441a28ab48168b47ce/html5/thumbnails/33.jpg)
Se redirige el tráfico
IPV
![Page 34: Alta disponibilidad con MySQL](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559849441a28ab48168b47ce/html5/thumbnails/34.jpg)
Tiempo ... 5 segundos
IPV
![Page 35: Alta disponibilidad con MySQL](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559849441a28ab48168b47ce/html5/thumbnails/35.jpg)
Se restablece el nodo fallido
IPV
![Page 36: Alta disponibilidad con MySQL](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559849441a28ab48168b47ce/html5/thumbnails/36.jpg)
Inicia sincronización
IPV
![Page 37: Alta disponibilidad con MySQL](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559849441a28ab48168b47ce/html5/thumbnails/37.jpg)
¿A dónde debo remitir la consulta?
![Page 38: Alta disponibilidad con MySQL](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559849441a28ab48168b47ce/html5/thumbnails/38.jpg)
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: Alta disponibilidad con MySQL](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559849441a28ab48168b47ce/html5/thumbnails/39.jpg)
Una posible solución ...
![Page 40: Alta disponibilidad con MySQL](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559849441a28ab48168b47ce/html5/thumbnails/40.jpg)
IPV
“Nodo” Maestro
Esclavo 1 Esclavo 2 Esclavo n
![Page 41: Alta disponibilidad con MySQL](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559849441a28ab48168b47ce/html5/thumbnails/41.jpg)
¿Qué viene más adelante?
![Page 42: Alta disponibilidad con MySQL](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559849441a28ab48168b47ce/html5/thumbnails/42.jpg)
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: Alta disponibilidad con MySQL](https://reader034.vdocuments.mx/reader034/viewer/2022052304/559849441a28ab48168b47ce/html5/thumbnails/43.jpg)
Referencias
● High Performance MySQL● Building Scalable Web Sites● DR:BD [www.drbd.org]● MySQL [www.mysql.com]● MySQL Replication Features
(Thalmann, Lars)