SlideShare une entreprise Scribd logo
1  sur  52
Télécharger pour lire hors ligne
Alta Disponibilidad con
     PostgreSQL
       Introducción
Agenda
●   Bases de Datos                   ●   Tolerancia a Fallos
●   PostgreSQL                       ●   Síncrona vs. Asíncrona
                                     ●   Diligente vs. Relajada
●   Alta Disponibilidad (HA)
                                     ●   Particionado de Datos
●   Términos
                                     ●   Cluster
    ●   Replicación
                                     ●   Grid
    ●   Métodos
                                     ●   Discos Compartidos
    ●   Balance de Cargas
                                     ●   Shared-Nothing
    ●   Consultas Distribuidas
                                 ●   Alternativas
    ●   Divergencia
                                 ●   Programas
    ●   ACID
Bases de Datos
Para entender cómo funciona algo lo mejor es
imaginar cómo lo harían los Picapiedras
Bases de Datos




Sistema de Digitalización




                            Almacenamiento de Calidad
Bases de Datos




Páginas de Memoria




                            Datacenter
Bases de Datos




          Caída del Sistema
Bases de Datos




Regresamos en Breve con Los Picapiedras
PostgreSQL
PostgreSQL es un sistema
de gestión de bases de
datos objeto-relacional,
distribuido bajo licencia
BSD y con código fuente
disponible libremente.
Utiliza un modelo
cliente/servidor y usa
multiprocesos en vez de
multihilos para garantizar
la estabilidad del sistema.
PostgreSQL
     ●   Nace en la
         Universidad de
         Berkeley en 1977
     ●   Sinónimo de:
         ●   Estabilidad
         ●   Potencia
         ●   Robustez
         ●   Facilidad de
             administración
         ●   Estándares
Alta Disponibilidad
Alta Disponibilidad
Según Wikipedia:

“Alta disponibilidad (High availability) es un protocolo de diseño del
sistema y su implementación asociada que asegura un cierto grado
absoluto de continuidad operacional durante un período de medición
dado. Disponibilidad se refiere a la habilidad de la comunidad de
usuarios para acceder al sistema, someter nuevos trabajos, actualizar
o alterar trabajos existentes o recoger los resultados de trabajos
previos. Si un usuario no puede acceder al sistema se dice que está
no disponible. El término tiempo de inactividad (downtime) es usado
para definir cuándo el sistema no está disponible”
Alta Disponibilidad
●   Viene definida por el resultado, no por la
    estrategia a implementar.
●   Se mide en términos de “Tiempo al Aire” y
    “Tiempo Fuera”.
●   El enemigo a vencer son las caídas de servicio
    y tiempos de recuperación.
●   A la Alta Disponibilidad se le suma en las
    Bases de Datos todos los aspectos de Calidad
    relacionadas con los servicios de este tipo.
Alta Disponibilidad
●   Recuperar un sistema
    toma su tiempo
●   La estrategia por
    excelencia es la
    redundancia de
    recursos
●   En los recursos
    redundantes
    hacemos copias
    (Replicación)
Algunos Términos y Definiciones de
        Alta Disponibilidad
Replicación
¿Qué entendemos por Replicación?
Replicación
Para los sistemas de base de datos, la
replicación es un proceso de
intercambio de datos de transacciones
para garantizar la coherencia entre los
nodos de la base de datos
redundantes. Esto mejora la tolerancia
a fallos, lo que conduce a una mayor
confiabilidad del sistema en general.
La replicación de bases de datos
también se puede llamar bases de
datos distribuidas, especialmente
cuando se combina con otras
características interesantes.
Replicación
En Bases de Datos
Métodos de Replicación
Replicación de Transacciones
●   Copia cada una de las transacciones ejecutadas en
    el sistema donde se encuentran conectados los
    usuarios hacia un conjunto de bases de datos
    secundarias.
●    Estas bases de datos secundarias recibe los
    cambios propagados por la base de datos primaria a
    través de un canal de comunicación.
●   En esta técnica existe el posible inconveniente de las
    diferencias generadas por funciones no
    determinísticas como now() o random().
Métodos de Replicación
Replicación por Bitácoras (logs)
  ●   Otro método comúnmente utilizado es el envío de
      logs (bitácoras de la base de datos).
  ●   Este método presenta el problema que muchas
      veces dichas bitácoras no siempre son pensadas
      como elementos de intercambio para efectos de
      replicación.
  ●   Este método generalmente se delega para
      porciones de la base de datos o ventanas de
      mantenimiento y sincronizaciones menores de
      bases de datos.
Métodos de Replicación
Replicación con Formatos Específicos
  ●   Estos casos generalmente conllevan a
      configuraciones adicionales.
Balance de Cargas




 No es lo mismo esto..
Balance de Cargas




    .. que esto.
Balance de Cargas
●   Generalmente asociado al concepto de
    replicación está el Balance de Carga para
    mejorar el desempeño de lectura.
●   Algunas soluciones para High Availability
    incorporan balanceadores de carga dentro de
    sus características esenciales. Otros reposan
    esta responsabilidad sobre programas
    altamente dependientes de la plataforma de
    Sistema Operativo o programas de Terceros.
Consultas Distribuidas
Es prácticamente otro nombre que recibe el
Balance de Cargas. Dentro de la documentación
de PostgreSQL se le conoce como “Multi-Server
Parallel Query Execution”
Divergencia




Encuentre las diferencias..
Divergencia




Encuentre las diferencias..
Divergencia
●   Mantener la coherencia de los datos a través de
    múltiples nodos replicados es un proceso costoso
    debido a la latencia de red.
●   Es así como algunos sistemas esquivan el costo por
    latencia permitiendo que los nodos diverjan levemente,
    lo que significa que es posible que se realicen
    transacciones en conflicto.
●   Para retomar bases de datos coherentes y consistentes,
    estos conflictos deben ser resueltos cuanto antes de
    forma automática o manual.
Divergencia
●   Estos conflictos rompen las condiciones ACID
    de los sistemas gestores de bases de datos, en
    cuyo caso las aplicaciones reposen bajo
    sistemas con divergencia deben estar al tanto e
    implementar sistemas de revisión.
ACID
●   Acrónimo de los términos:
    ●   Atomicity
    ●   Consistency
    ●   Isolation
    ●   Durability
●   Descrito en la norma ISO/IEC 10026-1: 1992
    sección 4.
ACID
●   Atomicity (Atomicidad) es la propiedad que
    asegura que la operación se ha realizado o no,
    y por lo tanto ante un fallo del sistema no
    puede quedar a medias.
●   Consistency (Integridad) Es la propiedad que
    asegura que sólo se empieza aquello que se
    puede acabar. Por lo tanto se ejecutan aquellas
    operaciones que no van a romper las reglas y
    directrices de integridad de la base de datos
ACID
●   Isolation (Aislamiento) es la propiedad que
    asegura que una operación no puede afectar a
    otras. Esto asegura que la realización de dos
    transacciones sobre la misma información sean
    independientes y no generen ningún tipo de
    error.
●   Durability (Durabilidad) es la propiedad que
    asegura que una vez realizada la operación,
    ésta persistirá y no se podrá deshacer aunque
    falle el sistema.
Tolerancia a Fallos
Ejemplos de Tolerancia y Recuperación de Fallos
Tolerancia a Fallos
Venido de los términos en inglés Failover y Switchover,
es la técnica que permite el cambio de forma automática
entre nodos redundantes de un arreglo de
computadores (o instancias de bases de datos).
Se prevé su uso para salvaguardar los servicios
provistos por servidores y aplicaciones de la interrupción
de forma anormal de los servicios de red, servidores y
aplicaciones instalados en los nodos activos de un
arreglo.
Tolerancia a Fallos
A nivel de servidores se configura igualmente
validaciones de "Hearthbeat" (incluso en zonas
geográficas distantes) para mantener
sincronizados dos o más computadores, de forma
de que si hay un fallo exista la posibilidad de
hacer "hot" switch entre servidores y evitar el
tiempo fuera (downtime).
Tolerancia a Fallos
         ●   Algunos sistemas, de forma
             intencional, no realizan el failover
             completamente automatizado.
         ●   mantienen un tiempo fuera de
             "solo lectura" hasta la
             intervención de un operario.
         ●   Un tipo de failover automático
             con confirmación humana.
         ●   Busca evaluar el impacto de la
             caída y elementos a recuperar al
             levantar los servicios.
Replicación Síncrona
Se realiza tan pronto como se realiza una
transacción la misma se ejecuta en todos los
nodos. Esto es muy costoso en términos de
latencia y la cantidad de mensajes que se
enviarán, pero evita la divergencia
Replicación Asíncrona
Los nodos del 'cluster' pueden aplicar los datos
de transacciones en cualquier momento posterior,
por lo que los nodos pueden servir diferentes
simultáneamente distinta data.
Replicación Diligente
Normalmente en la documentación de Bases de
Datos se utilizan como sinónimos de
replicaciones Síncronas y Asíncronas. En
principio toda replicación diligente o entusiasta es
síncrona, pues se busca tener una copia exacta e
indéntica en cada nodo.
Replicación Relajada
En el caso de las replicaciones relajadas el
proceso de divergencia es controlado, es decir,
se establecen un conjunto de reglas y parámetros
que permitan una divergencia leve que no afecte
el funcionamiento del proceso general.
Particionado de Datos
Particionado Vertical
Similar   al   proceso    de
normalización   separa    en
tablas con menor cantidad de
columnas los datos de una
misma entidad.


Particionado Horizontal
Permite almacenar registros
de diferentes tablas.
Particionado de Datos
●   En sistemas Multi Maestro puede utilizarse
    para distribuir la trozos de data a través de los
    nodos.
●   El uso de particionado requiere del uso de
    consultas distribuidas.
●   Reduce la carga total de su “cluster”
Cluster
Cluster
●   En general la definición de “Cluster” o
    “Clustering” es bastante vaga en la
    documentación
●   Suele referirse al agrupamiento de servidores
    según la técnica que lo emplee.
●   A cada servidor se le conoce como nodo.
Grid
●   Nombre comercial para “Cluster”
●   Normalmente montado sobre redes de
    conexiones redundantes, o no dirigidas o con
    interfaces sobre la Internet según el autor que
    se consulte.
Replicación de Discos
Forma donde se delega la replicación a
componentes del sistema de archivo que se
replican.
Puede ser una solución simple y elegante para
abordar el failover por disco.
Shared-Nothing
●   Arquitectura de Computación Distribuida donde
    se segmentan elementos de los servicios a
    servidores individuales (o conjuntos pequeños
    de servidores en cluster) que no comparten
    nada entre si.
●   Ampliamente utilizado para atender
    aplicaciones de alto volumen de consultas y
    transacciones separadas por ámbitos
¿Y cómo hacemos todo esto con
        PostgreSQL?
¿Y cómo hacemos todo esto con
        PostgreSQL?
Alternativas de HA con PostgreSQL
Programas para HA con PostgreSQL
                                                                                      Pool de                       Particionamiento de
  Programa    Licencia       Madurez        Metodo de Replicación   Sincronización              Balanceo de Carga
                                                                                     Conexión                            Consultas




                         Ver los detalles
  PGCluster    BSD                            Maestro-Maestro         Síncrono         NO              SI                  NO
                         en la pagina web


   Pgpool-I    BSD           Estable                                  Síncrono          SI             SI                  NO


                             Liberada
  Pgpool-II    BSD                                                    Síncrono          SI             SI                   SI
                          recientemente



   Slony-I     BSD           Estable          Maestro-Esclavo         Asíncrono        NO             NO                   NO



                                              Maestro-Maestro
   Bucardo     BSD           Estable                                  Asíncrono        NO             NO                   NO
                                              Maestro-Esclavo



  Londiste     BSD           Estable         Maestro-Esclavo         Asíncrono         NO             NO                   NO


  Mammoth      BSD           Estable         Maestro-Esclavo         Asíncrono         NO             NO                   NO


                            Liberada         Maestro-Maestro
  Rubyrep      MIT                                                   Asíncrono         NO             NO                   NO
                         recientemente       Maestro-Esclavo
Veamos ahora cómo
   trabaja pgpool
Créditos

      @carlosgr_arahat
         @lennincaro
          @leninmhs
           @deglip
        @gregoria126
            @cnti

              Fuentes:
        documentación pgpool;
documentación proyecto postgresql-r;
              Wikipedia

Contenu connexe

Tendances

Arquitectura Multiprocesadores
Arquitectura Multiprocesadores Arquitectura Multiprocesadores
Arquitectura Multiprocesadores
JUANR1022
 

Tendances (20)

Transaccion
TransaccionTransaccion
Transaccion
 
Networking in linux
Networking in linuxNetworking in linux
Networking in linux
 
Port Security
Port SecurityPort Security
Port Security
 
Telnet & SSH
Telnet & SSHTelnet & SSH
Telnet & SSH
 
SSH.ppt
SSH.pptSSH.ppt
SSH.ppt
 
AFS introduction
AFS introductionAFS introduction
AFS introduction
 
Self-Signed SSL Versus Trusted CA Signed SSL Certificate
Self-Signed SSL Versus Trusted CA Signed SSL CertificateSelf-Signed SSL Versus Trusted CA Signed SSL Certificate
Self-Signed SSL Versus Trusted CA Signed SSL Certificate
 
Ssh
SshSsh
Ssh
 
Sistemas de archivos
Sistemas de archivosSistemas de archivos
Sistemas de archivos
 
Transacciones
TransaccionesTransacciones
Transacciones
 
What is SSL ? The Secure Sockets Layer (SSL) Protocol
What is SSL ? The Secure Sockets Layer (SSL) ProtocolWhat is SSL ? The Secure Sockets Layer (SSL) Protocol
What is SSL ? The Secure Sockets Layer (SSL) Protocol
 
Unidad1 2 Lenguajes y automatas
Unidad1 2  Lenguajes y automatasUnidad1 2  Lenguajes y automatas
Unidad1 2 Lenguajes y automatas
 
Linux 101
Linux 101Linux 101
Linux 101
 
Nfs
NfsNfs
Nfs
 
Arquitectura Multiprocesadores
Arquitectura Multiprocesadores Arquitectura Multiprocesadores
Arquitectura Multiprocesadores
 
RPC
RPCRPC
RPC
 
Apache ppt
Apache pptApache ppt
Apache ppt
 
Technical Architectures
Technical ArchitecturesTechnical Architectures
Technical Architectures
 
Seguridad y proteccion en Sistemas Operativos
Seguridad y proteccion en Sistemas OperativosSeguridad y proteccion en Sistemas Operativos
Seguridad y proteccion en Sistemas Operativos
 
Que es y como usar nmap
Que es y como usar nmapQue es y como usar nmap
Que es y como usar nmap
 

En vedette

Comandos y funciones sql postgres
Comandos y funciones sql postgresComandos y funciones sql postgres
Comandos y funciones sql postgres
HIPOLITO GRULLON
 
MySQL - High Availability - Load Balacing - Cluster
MySQL - High Availability - Load Balacing - ClusterMySQL - High Availability - Load Balacing - Cluster
MySQL - High Availability - Load Balacing - Cluster
Miguel Angel Nieto
 

En vedette (20)

Guía de pgpool Paso a Paso
Guía de pgpool Paso a PasoGuía de pgpool Paso a Paso
Guía de pgpool Paso a Paso
 
Mapa Colaborativo con OpenStreetMap
Mapa Colaborativo con OpenStreetMapMapa Colaborativo con OpenStreetMap
Mapa Colaborativo con OpenStreetMap
 
Dba PostgreSQL desde básico a avanzado parte2
Dba PostgreSQL desde básico a avanzado parte2Dba PostgreSQL desde básico a avanzado parte2
Dba PostgreSQL desde básico a avanzado parte2
 
Dba PostgreSQL desde básico a avanzado parte1
Dba PostgreSQL desde básico a avanzado parte1Dba PostgreSQL desde básico a avanzado parte1
Dba PostgreSQL desde básico a avanzado parte1
 
Requerimientos de PostgreSQL
Requerimientos de PostgreSQLRequerimientos de PostgreSQL
Requerimientos de PostgreSQL
 
TIPO DE DATOS - POSTGRESQL
TIPO DE DATOS - POSTGRESQLTIPO DE DATOS - POSTGRESQL
TIPO DE DATOS - POSTGRESQL
 
TechParty FACCAT 2015 - TI na Administração Pública
TechParty FACCAT 2015 - TI na Administração PúblicaTechParty FACCAT 2015 - TI na Administração Pública
TechParty FACCAT 2015 - TI na Administração Pública
 
UML - Casos de Uso Avançado
UML - Casos de Uso AvançadoUML - Casos de Uso Avançado
UML - Casos de Uso Avançado
 
Manual del cluster mysql
Manual del cluster mysqlManual del cluster mysql
Manual del cluster mysql
 
Bases de Datos Libres desde 40.000 pies de altura
Bases de Datos Libres desde 40.000 pies de alturaBases de Datos Libres desde 40.000 pies de altura
Bases de Datos Libres desde 40.000 pies de altura
 
Presentación postgre sql
Presentación postgre sqlPresentación postgre sql
Presentación postgre sql
 
Por qué hacemos persistencia de datos
Por qué hacemos persistencia de datosPor qué hacemos persistencia de datos
Por qué hacemos persistencia de datos
 
GeoEtiquetas (2das Jornadas Latinoamérica y Caribe gvSIG)
GeoEtiquetas (2das Jornadas Latinoamérica y Caribe gvSIG)GeoEtiquetas (2das Jornadas Latinoamérica y Caribe gvSIG)
GeoEtiquetas (2das Jornadas Latinoamérica y Caribe gvSIG)
 
Postgresql Como Funciona Una Dbms Por Dentro
Postgresql Como Funciona Una Dbms Por DentroPostgresql Como Funciona Una Dbms Por Dentro
Postgresql Como Funciona Una Dbms Por Dentro
 
Postgre
PostgrePostgre
Postgre
 
Curso de PostgreSQL
Curso de PostgreSQLCurso de PostgreSQL
Curso de PostgreSQL
 
Comandos y funciones sql postgres
Comandos y funciones sql postgresComandos y funciones sql postgres
Comandos y funciones sql postgres
 
MySQL - High Availability - Load Balacing - Cluster
MySQL - High Availability - Load Balacing - ClusterMySQL - High Availability - Load Balacing - Cluster
MySQL - High Availability - Load Balacing - Cluster
 
Cuellos botella en PostgreSQL
Cuellos botella en PostgreSQLCuellos botella en PostgreSQL
Cuellos botella en PostgreSQL
 
Servicios de Software Factory - EqSoft
Servicios de Software Factory - EqSoftServicios de Software Factory - EqSoft
Servicios de Software Factory - EqSoft
 

Similaire à Alta Disponibilidad con PostgreSQL

Arquitecturas de bd
Arquitecturas de bdArquitecturas de bd
Arquitecturas de bd
Luis Jherry
 
Presentación sgbd
Presentación sgbdPresentación sgbd
Presentación sgbd
Sergio Cano
 

Similaire à Alta Disponibilidad con PostgreSQL (20)

sistemas distribuidos 4
sistemas distribuidos 4sistemas distribuidos 4
sistemas distribuidos 4
 
Gestores de base de datos
Gestores de base de datosGestores de base de datos
Gestores de base de datos
 
Taller de Base de Datos - Unidad 5 transacciones
Taller de Base de Datos - Unidad 5  transaccionesTaller de Base de Datos - Unidad 5  transacciones
Taller de Base de Datos - Unidad 5 transacciones
 
Smbd (2)
Smbd (2)Smbd (2)
Smbd (2)
 
Smbd (2)
Smbd (2)Smbd (2)
Smbd (2)
 
Smb Dfin
Smb DfinSmb Dfin
Smb Dfin
 
Gestor de base de datos
Gestor de base de datosGestor de base de datos
Gestor de base de datos
 
Sistemas distribuidos
Sistemas distribuidosSistemas distribuidos
Sistemas distribuidos
 
Arquitectura centralizada
Arquitectura centralizadaArquitectura centralizada
Arquitectura centralizada
 
Sistemas-Distribuidos.pptx
Sistemas-Distribuidos.pptxSistemas-Distribuidos.pptx
Sistemas-Distribuidos.pptx
 
Libro so
Libro soLibro so
Libro so
 
Arquitecturas de bd
Arquitecturas de bdArquitecturas de bd
Arquitecturas de bd
 
Bd no sqlcb2
Bd no sqlcb2Bd no sqlcb2
Bd no sqlcb2
 
Diseño de aplicaciones de bases de datos SQL Azure
Diseño de aplicaciones de bases de datos SQL AzureDiseño de aplicaciones de bases de datos SQL Azure
Diseño de aplicaciones de bases de datos SQL Azure
 
Clusters
ClustersClusters
Clusters
 
Presentación sgbd
Presentación sgbdPresentación sgbd
Presentación sgbd
 
Oracle
OracleOracle
Oracle
 
Video sgbd
Video sgbdVideo sgbd
Video sgbd
 
Patrones para el diseño de aplicaciones en la Nube
Patrones para el diseño de aplicaciones en la NubePatrones para el diseño de aplicaciones en la Nube
Patrones para el diseño de aplicaciones en la Nube
 
Arquitecturas de Base de Datos- kmm.pptx
Arquitecturas de Base de Datos- kmm.pptxArquitecturas de Base de Datos- kmm.pptx
Arquitecturas de Base de Datos- kmm.pptx
 

Plus de Carlos Gustavo Ruiz (7)

Vim python-mode
Vim python-modeVim python-mode
Vim python-mode
 
Geomática Libre en Venezuela - Presentación a José Sosa (CNTI)
Geomática Libre en Venezuela - Presentación a José Sosa (CNTI)Geomática Libre en Venezuela - Presentación a José Sosa (CNTI)
Geomática Libre en Venezuela - Presentación a José Sosa (CNTI)
 
mini-taller de Base de Datos y PostgreSQL
mini-taller de Base de Datos y PostgreSQLmini-taller de Base de Datos y PostgreSQL
mini-taller de Base de Datos y PostgreSQL
 
Web Mapping con Django
Web Mapping con DjangoWeb Mapping con Django
Web Mapping con Django
 
Integrando mis librerías C++ con Python
Integrando mis librerías C++ con PythonIntegrando mis librerías C++ con Python
Integrando mis librerías C++ con Python
 
Mejores prácticas para migración de Bases de Datos
Mejores prácticas para migración de Bases de DatosMejores prácticas para migración de Bases de Datos
Mejores prácticas para migración de Bases de Datos
 
Python vs El Mundo
Python vs El MundoPython vs El Mundo
Python vs El Mundo
 

Alta Disponibilidad con PostgreSQL

  • 1. Alta Disponibilidad con PostgreSQL Introducción
  • 2. Agenda ● Bases de Datos ● Tolerancia a Fallos ● PostgreSQL ● Síncrona vs. Asíncrona ● Diligente vs. Relajada ● Alta Disponibilidad (HA) ● Particionado de Datos ● Términos ● Cluster ● Replicación ● Grid ● Métodos ● Discos Compartidos ● Balance de Cargas ● Shared-Nothing ● Consultas Distribuidas ● Alternativas ● Divergencia ● Programas ● ACID
  • 3. Bases de Datos Para entender cómo funciona algo lo mejor es imaginar cómo lo harían los Picapiedras
  • 4. Bases de Datos Sistema de Digitalización Almacenamiento de Calidad
  • 5. Bases de Datos Páginas de Memoria Datacenter
  • 6. Bases de Datos Caída del Sistema
  • 7. Bases de Datos Regresamos en Breve con Los Picapiedras
  • 8. PostgreSQL PostgreSQL es un sistema de gestión de bases de datos objeto-relacional, distribuido bajo licencia BSD y con código fuente disponible libremente. Utiliza un modelo cliente/servidor y usa multiprocesos en vez de multihilos para garantizar la estabilidad del sistema.
  • 9. PostgreSQL ● Nace en la Universidad de Berkeley en 1977 ● Sinónimo de: ● Estabilidad ● Potencia ● Robustez ● Facilidad de administración ● Estándares
  • 11. Alta Disponibilidad Según Wikipedia: “Alta disponibilidad (High availability) es un protocolo de diseño del sistema y su implementación asociada que asegura un cierto grado absoluto de continuidad operacional durante un período de medición dado. Disponibilidad se refiere a la habilidad de la comunidad de usuarios para acceder al sistema, someter nuevos trabajos, actualizar o alterar trabajos existentes o recoger los resultados de trabajos previos. Si un usuario no puede acceder al sistema se dice que está no disponible. El término tiempo de inactividad (downtime) es usado para definir cuándo el sistema no está disponible”
  • 12. Alta Disponibilidad ● Viene definida por el resultado, no por la estrategia a implementar. ● Se mide en términos de “Tiempo al Aire” y “Tiempo Fuera”. ● El enemigo a vencer son las caídas de servicio y tiempos de recuperación. ● A la Alta Disponibilidad se le suma en las Bases de Datos todos los aspectos de Calidad relacionadas con los servicios de este tipo.
  • 13. Alta Disponibilidad ● Recuperar un sistema toma su tiempo ● La estrategia por excelencia es la redundancia de recursos ● En los recursos redundantes hacemos copias (Replicación)
  • 14. Algunos Términos y Definiciones de Alta Disponibilidad
  • 16. Replicación Para los sistemas de base de datos, la replicación es un proceso de intercambio de datos de transacciones para garantizar la coherencia entre los nodos de la base de datos redundantes. Esto mejora la tolerancia a fallos, lo que conduce a una mayor confiabilidad del sistema en general. La replicación de bases de datos también se puede llamar bases de datos distribuidas, especialmente cuando se combina con otras características interesantes.
  • 18. Métodos de Replicación Replicación de Transacciones ● Copia cada una de las transacciones ejecutadas en el sistema donde se encuentran conectados los usuarios hacia un conjunto de bases de datos secundarias. ● Estas bases de datos secundarias recibe los cambios propagados por la base de datos primaria a través de un canal de comunicación. ● En esta técnica existe el posible inconveniente de las diferencias generadas por funciones no determinísticas como now() o random().
  • 19. Métodos de Replicación Replicación por Bitácoras (logs) ● Otro método comúnmente utilizado es el envío de logs (bitácoras de la base de datos). ● Este método presenta el problema que muchas veces dichas bitácoras no siempre son pensadas como elementos de intercambio para efectos de replicación. ● Este método generalmente se delega para porciones de la base de datos o ventanas de mantenimiento y sincronizaciones menores de bases de datos.
  • 20. Métodos de Replicación Replicación con Formatos Específicos ● Estos casos generalmente conllevan a configuraciones adicionales.
  • 21. Balance de Cargas No es lo mismo esto..
  • 22. Balance de Cargas .. que esto.
  • 23. Balance de Cargas ● Generalmente asociado al concepto de replicación está el Balance de Carga para mejorar el desempeño de lectura. ● Algunas soluciones para High Availability incorporan balanceadores de carga dentro de sus características esenciales. Otros reposan esta responsabilidad sobre programas altamente dependientes de la plataforma de Sistema Operativo o programas de Terceros.
  • 24. Consultas Distribuidas Es prácticamente otro nombre que recibe el Balance de Cargas. Dentro de la documentación de PostgreSQL se le conoce como “Multi-Server Parallel Query Execution”
  • 27. Divergencia ● Mantener la coherencia de los datos a través de múltiples nodos replicados es un proceso costoso debido a la latencia de red. ● Es así como algunos sistemas esquivan el costo por latencia permitiendo que los nodos diverjan levemente, lo que significa que es posible que se realicen transacciones en conflicto. ● Para retomar bases de datos coherentes y consistentes, estos conflictos deben ser resueltos cuanto antes de forma automática o manual.
  • 28. Divergencia ● Estos conflictos rompen las condiciones ACID de los sistemas gestores de bases de datos, en cuyo caso las aplicaciones reposen bajo sistemas con divergencia deben estar al tanto e implementar sistemas de revisión.
  • 29. ACID ● Acrónimo de los términos: ● Atomicity ● Consistency ● Isolation ● Durability ● Descrito en la norma ISO/IEC 10026-1: 1992 sección 4.
  • 30. ACID ● Atomicity (Atomicidad) es la propiedad que asegura que la operación se ha realizado o no, y por lo tanto ante un fallo del sistema no puede quedar a medias. ● Consistency (Integridad) Es la propiedad que asegura que sólo se empieza aquello que se puede acabar. Por lo tanto se ejecutan aquellas operaciones que no van a romper las reglas y directrices de integridad de la base de datos
  • 31. ACID ● Isolation (Aislamiento) es la propiedad que asegura que una operación no puede afectar a otras. Esto asegura que la realización de dos transacciones sobre la misma información sean independientes y no generen ningún tipo de error. ● Durability (Durabilidad) es la propiedad que asegura que una vez realizada la operación, ésta persistirá y no se podrá deshacer aunque falle el sistema.
  • 32. Tolerancia a Fallos Ejemplos de Tolerancia y Recuperación de Fallos
  • 33. Tolerancia a Fallos Venido de los términos en inglés Failover y Switchover, es la técnica que permite el cambio de forma automática entre nodos redundantes de un arreglo de computadores (o instancias de bases de datos). Se prevé su uso para salvaguardar los servicios provistos por servidores y aplicaciones de la interrupción de forma anormal de los servicios de red, servidores y aplicaciones instalados en los nodos activos de un arreglo.
  • 34. Tolerancia a Fallos A nivel de servidores se configura igualmente validaciones de "Hearthbeat" (incluso en zonas geográficas distantes) para mantener sincronizados dos o más computadores, de forma de que si hay un fallo exista la posibilidad de hacer "hot" switch entre servidores y evitar el tiempo fuera (downtime).
  • 35. Tolerancia a Fallos ● Algunos sistemas, de forma intencional, no realizan el failover completamente automatizado. ● mantienen un tiempo fuera de "solo lectura" hasta la intervención de un operario. ● Un tipo de failover automático con confirmación humana. ● Busca evaluar el impacto de la caída y elementos a recuperar al levantar los servicios.
  • 36. Replicación Síncrona Se realiza tan pronto como se realiza una transacción la misma se ejecuta en todos los nodos. Esto es muy costoso en términos de latencia y la cantidad de mensajes que se enviarán, pero evita la divergencia
  • 37. Replicación Asíncrona Los nodos del 'cluster' pueden aplicar los datos de transacciones en cualquier momento posterior, por lo que los nodos pueden servir diferentes simultáneamente distinta data.
  • 38. Replicación Diligente Normalmente en la documentación de Bases de Datos se utilizan como sinónimos de replicaciones Síncronas y Asíncronas. En principio toda replicación diligente o entusiasta es síncrona, pues se busca tener una copia exacta e indéntica en cada nodo.
  • 39. Replicación Relajada En el caso de las replicaciones relajadas el proceso de divergencia es controlado, es decir, se establecen un conjunto de reglas y parámetros que permitan una divergencia leve que no afecte el funcionamiento del proceso general.
  • 40. Particionado de Datos Particionado Vertical Similar al proceso de normalización separa en tablas con menor cantidad de columnas los datos de una misma entidad. Particionado Horizontal Permite almacenar registros de diferentes tablas.
  • 41. Particionado de Datos ● En sistemas Multi Maestro puede utilizarse para distribuir la trozos de data a través de los nodos. ● El uso de particionado requiere del uso de consultas distribuidas. ● Reduce la carga total de su “cluster”
  • 43. Cluster ● En general la definición de “Cluster” o “Clustering” es bastante vaga en la documentación ● Suele referirse al agrupamiento de servidores según la técnica que lo emplee. ● A cada servidor se le conoce como nodo.
  • 44. Grid ● Nombre comercial para “Cluster” ● Normalmente montado sobre redes de conexiones redundantes, o no dirigidas o con interfaces sobre la Internet según el autor que se consulte.
  • 45. Replicación de Discos Forma donde se delega la replicación a componentes del sistema de archivo que se replican. Puede ser una solución simple y elegante para abordar el failover por disco.
  • 46. Shared-Nothing ● Arquitectura de Computación Distribuida donde se segmentan elementos de los servicios a servidores individuales (o conjuntos pequeños de servidores en cluster) que no comparten nada entre si. ● Ampliamente utilizado para atender aplicaciones de alto volumen de consultas y transacciones separadas por ámbitos
  • 47. ¿Y cómo hacemos todo esto con PostgreSQL?
  • 48. ¿Y cómo hacemos todo esto con PostgreSQL?
  • 49. Alternativas de HA con PostgreSQL
  • 50. Programas para HA con PostgreSQL Pool de Particionamiento de Programa Licencia Madurez Metodo de Replicación Sincronización Balanceo de Carga Conexión Consultas Ver los detalles PGCluster BSD Maestro-Maestro Síncrono NO SI NO en la pagina web Pgpool-I BSD Estable Síncrono SI SI NO Liberada Pgpool-II BSD Síncrono SI SI SI recientemente Slony-I BSD Estable Maestro-Esclavo Asíncrono NO NO NO Maestro-Maestro Bucardo BSD Estable Asíncrono NO NO NO Maestro-Esclavo Londiste BSD Estable Maestro-Esclavo Asíncrono NO NO NO Mammoth BSD Estable Maestro-Esclavo Asíncrono NO NO NO Liberada Maestro-Maestro Rubyrep MIT Asíncrono NO NO NO recientemente Maestro-Esclavo
  • 51. Veamos ahora cómo trabaja pgpool
  • 52. Créditos @carlosgr_arahat @lennincaro @leninmhs @deglip @gregoria126 @cnti Fuentes: documentación pgpool; documentación proyecto postgresql-r; Wikipedia