Upload
pgday-campinas
View
159
Download
8
Embed Size (px)
DESCRIPTION
Muestra como usar la herramienta "repmgr" para administrar un cluster de replicación en PostgreSQL. Desde crear nodos, hasta configurar un procedimiento simple de Failover automático. También incluirá algunas ideas con respecto a la nueva tecnología de 2ndQuadrant: BDR -- Palestra apresentada por Jaime Casanova no PGDay Campinas 2014
Citation preview
Domando a la bestia: replicación
Jaime Casanova - CTO 2ndQuadrant Ecuador
Domando a la bestia: replicación
Copyright © 2014, 2ndQuadrant Limited 2
Replicación: una bestia dificil de domar
Domando a la bestia: replicación
Copyright © 2014, 2ndQuadrant Limited 3
Replicación: una bestia dificil de domar
Primeros intentos
• Replicación basada en triggers• Slony / Londiste
• Replicación basada en middleware• pgpool
Replicación basada en triggers
• No replica DDL• Al principio tratar de ejecutar DDL’s en todos los nodos era un dolor de cabeza
• Administración compleja• Configuración por tabla, flexible
Domando a la bestia: replicación
Copyright © 2014, 2ndQuadrant Limited 4
• Puede ser peligrosa mal utilizada
Replicación basada en triggers
• Incializar el cluster (un esquema y tablas para configuración)• Agregar nodos• Agregar rutas de conexión• Agregar tablas• Copia inicial• Procesos en segundo plano
Mantenimiento en cada nodo de forma independiente
Replicación basada en middleware
• Simplemente peligrosa
Replicación física
• Basada en archivos (8.2+)• Administración simple• Posible perdida de hasta los últimos 16MB o los últimos N segundos
• Basada en flujo de replicación (9.0+)• Administración simple• Cero perdida de datos es posible
• synchronous_commit y synchronous_standby_names (9.1+)
Domando a la bestia: replicación
Copyright © 2014, 2ndQuadrant Limited 5
Replicación física Parámetro | Valor----------------------------+-------------------- wal_level | hot_standby max_wal_senders | 10
archive_command | exit 0archive_mode | on
hot_standby | onhot_standby_feedback | onmax_replication_slots | 10wal_keep_segments | 5000
La replicación física trae sus propios problemas
• ¿Como se monitorea?• La decepción de pg_stat_replication (9.1+)
• ¿Cómo escoger un nuevo primario?• ¿Qué pasa con el cluster?
repmgr: para domar la replicación física
• Administra, de forma simple, un cluster de replicación física• Monitorea los nodos• Promueve un nodo de forma segura• Reconfigura el cluster• Autofailover (v2.0+)
repmgr standby clone
Prepara un nuevo nodo
• Verifica que existan las rutas de los tablespaces y que el usuario postgres pueda escribir en lasmismas
Domando a la bestia: replicación
Copyright © 2014, 2ndQuadrant Limited 6
• Copia los archivos de configuración aun cuando esten fuera de la ruta normal• Intenta no copiar todos los datos cuando estos ya existen
• La opción --force• El misterio de wal_keep_segments
• 5000 segmentos u 80GB de espacio• La opción --wal-keep-segments• Mejoras en v2.1 (9.4+)
repmgr standby promote
• ¿Qué nodo promover?
postgres=# select * from repmgr_test.repl_status ;
primary_node 1
standby_node 2
standby_name deimos
last_monitor_time 2014-09-09 08:43:02.289029-05
last_wal_primary_location 0/3039700
last_wal_standby_location 0/3039700
replication_lag 0 bytes
replication_time_lag 00:00:03.137791
apply_lag 0 bytes
communication_time_lag 00:00:00.632396
repmgr standby promote
• Mejoras en v2.1 (9.3+)• pg_ctl promote
repmgr standby follow
• Reconfigura el cluster para que todos las réplicas sigan al nuevo maestro.• El detecta quien es el nuevo maestro
Domando a la bestia: replicación
Copyright © 2014, 2ndQuadrant Limited 7
Autofailover (v2.0+)
• Se requiere un número impar de nodos• repmgr provee la funcionalidad de witness
repmgr witness create
• Cada nodo tiene la información suficiente para tomar una decisión informada
repmgr_get_last_standby_location() repmgr_update_standby_location(text) repmgr_get_last_updated() repmgr_update_last_updated()
Autofailover (v2.0+)
• Tiempo de reacción ante la perdida del maestro configurable
master_response_timeout=60reconnect_attempts=6reconnect_interval=10
• Priorización de nodos
failover=manualpriority=-1
• Acciones personalizables para eventos promote y follow
promote_command='repmgr standby promote -f /path/to/repmgr.conf'follow_command='repmgr standby follow -f /path/to/repmgr.conf -W'
Domando a la bestia: replicación
Copyright © 2014, 2ndQuadrant Limited 8
Conclusiones
¿Preguntas?
BDR
Replicación Bi-Direccional (Multi-maestro)