Alta Disponibilidad   con



                            Por: Ing. Dennis Cohn Muroy
Agenda

●   Alta disponibilidad
●   Replicación
●   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
●   Tiempo
    ●   Hacer uso de equipos de respaldo
●   Pérdida de transacciones
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)
Maestro – Maestro
●   Insertar / modificar registros en más de una
    instancia MySQL
●   Datos replicados asíncronamente
●   Modos:
    ●   Activo – Pasivo
    ●   Activo – Activo
Maestro – Maestro: Configuración
Pasos a aplicar a cada nodo:
●   Crear usuario con permiso de    log-bin
    replicación                     binlog-do-db=<bd a replicar>
●   Editar /etc/my.cfg              binlog-ignore-db=<bd ignorar>
●   Indicar usuario a usar
    (CHANGE MASTER TO)              server-id=<entero único>

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

●   Revisar los estados
    ●   show master statusG;
    ●   show slave statusG;
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: Configuración
●   Maestro: crear usuario;      server-id=<entero único>
    permiso de replicación       log-bin
●   Maestro: /etc/my.cfg         binlog-do-db=<bd a replicar>
                                 binlog-ignore-db=<bd ignorar>
●   Maestro: Verificar estado
●   Esclavo: /etc/my.cfg         server-id=<entero único>
●   Esclavo: Indicar usuario a
    usar (CHANGE MASTER
    TO)
●   Iniciar la función de
    escucha (start slave)
●   Esclavo: Verificar estado
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 1
      Esclavo 2
                            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:
    ●   Síncrono:
        –   Escritura en disco = activo + pasivo
    ●   Asíncrono:
        –   Escritura en disco = activo
Nodo Primario   Nodo Secundario
¿Cómo interactuar con la réplica en caso la
     base de datos primaria falle?
Heartbeat
●   Migración de servicio + ip de un nodo a otro

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


         IPV
Nodo activo falla


        IPV
Heartbeat detecta el fallo


             IPV
Se redirige el tráfico


           IPV
Tiempo ... 5 segundos


          IPV
Se restablece el nodo fallido


              IPV
Inicia sincronización


          IPV
¿A dónde debo remitir la consulta?
Ruteando las consultas
●   Maestro: Insert, Update, Delete
●   Esclavo: Select
●   Tipos
    ●   Enlazado con la aplicación
        –   Implementación
        –   SQL Relay
    ●   Transparente
        –   MySQL Proxy
        –   Tungsten
Una posible solución ...
IPV

                                          “Nodo” Maestro




Esclavo 1         Esclavo 2   Esclavo n
¿Qué viene más adelante?
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
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
          dennis.cohn@pucp.edu.pe
           Follow me: @denniscm20

Alta disponibilidad con MySQL

  • 1.
    Alta Disponibilidad con Por: Ing. Dennis Cohn Muroy
  • 2.
    Agenda ● Alta disponibilidad ● Replicación ● DRBD ● Heartbeat ● Ruteando las consultas ● Mejoras esperadas
  • 3.
    Alta Disponibilidad ● Servicios siempre disponibles ● Tolerancia a Fallos ● Redundancia y Sistemas de reemplazo
  • 4.
    Consideraciones ● Puntos de Falla (Redundancia) ● Factibilidad de eliminar nodos ● Tiempo ● Hacer uso de equipos de respaldo ● Pérdida de transacciones
  • 5.
    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)
  • 6.
    Maestro – Maestro ● Insertar / modificar registros en más de una instancia MySQL ● Datos replicados asíncronamente ● Modos: ● Activo – Pasivo ● Activo – Activo
  • 7.
    Maestro – Maestro:Configuración Pasos a aplicar a cada nodo: ● Crear usuario con permiso de log-bin replicación binlog-do-db=<bd a replicar> ● Editar /etc/my.cfg binlog-ignore-db=<bd ignorar> ● Indicar usuario a usar (CHANGE MASTER TO) server-id=<entero único> ● Iniciar la función de escucha (start slave) ● Revisar los estados ● show master statusG; ● show slave statusG;
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
    ¿Qué hacer encaso de fallo?
  • 13.
  • 14.
  • 15.
    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)
  • 16.
    Maestro – MaestroNO distribuye INSERTs
  • 17.
    Maestro – Esclavo ● Maestro: Solo escritura ● Esclavo: Solo lectura ● 1 Maestro, N Esclavos
  • 18.
    Maestro – Esclavo:Configuración ● Maestro: crear usuario; server-id=<entero único> permiso de replicación log-bin ● Maestro: /etc/my.cfg binlog-do-db=<bd a replicar> binlog-ignore-db=<bd ignorar> ● Maestro: Verificar estado ● Esclavo: /etc/my.cfg server-id=<entero único> ● Esclavo: Indicar usuario a usar (CHANGE MASTER TO) ● Iniciar la función de escucha (start slave) ● Esclavo: Verificar estado
  • 19.
    Maestro con unEsclavo Maestro Esclavo 1
  • 20.
    Agregando un segundoesclavo Maestro Esclavo 2 Esclavo 1
  • 21.
    En caso elmaestro falle... Maestro Esclavo 2 Esclavo 1
  • 22.
    Detectando la falla... Maestro Esclavo 2 Esclavo 1
  • 23.
    Promoviendo un Esclavoa Maestro Maestro Esclavo 1 Esclavo 2 Maestro
  • 24.
    Maestro – Esclavo: Recomendaciones ● InnoDB en el maestro (transacciones) ● MyISAM en el esclavo (solo lectura) ● Separar: Relay logs – archivos de datos
  • 25.
    Pero se invierteMUCHO tiempo promoviendo un nuevo maestro.
  • 26.
    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
  • 27.
    Nodo Primario Nodo Secundario
  • 28.
    ¿Cómo interactuar conla réplica en caso la base de datos primaria falle?
  • 29.
    Heartbeat ● Migración de servicio + ip de un nodo a otro ● Comunicación entre 2 nodos: ● Estado de procesos en el otro nodo
  • 30.
  • 31.
  • 32.
  • 33.
    Se redirige eltráfico IPV
  • 34.
    Tiempo ... 5segundos IPV
  • 35.
    Se restablece elnodo fallido IPV
  • 36.
  • 37.
    ¿A dónde deboremitir la consulta?
  • 38.
    Ruteando las consultas ● Maestro: Insert, Update, Delete ● Esclavo: Select ● Tipos ● Enlazado con la aplicación – Implementación – SQL Relay ● Transparente – MySQL Proxy – Tungsten
  • 39.
  • 40.
    IPV “Nodo” Maestro Esclavo 1 Esclavo 2 Esclavo n
  • 41.
  • 42.
    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
  • 43.
    Referencias ● High Performance MySQL ● Building Scalable Web Sites ● DR:BD [www.drbd.org] ● MySQL [www.mysql.com] ● MySQL Replication Features (Thalmann, Lars)
  • 44.
    Gracias Ing. Dennis Cohn Muroy dennis.cohn@pucp.edu.pe Follow me: @denniscm20