Jaime Casanova - Domando a la bestia Replicación

8
Domando a la bestia: replicación Jaime Casanova - CTO 2ndQuadrant Ecuador

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

Transcript of Jaime Casanova - Domando a la bestia Replicación

Page 1: Jaime Casanova - Domando a la bestia Replicación

Domando a la bestia: replicación

Jaime Casanova - CTO 2ndQuadrant Ecuador

Page 2: Jaime Casanova - Domando a la bestia Replicación

Domando a la bestia: replicación

Copyright © 2014, 2ndQuadrant Limited 2

Replicación: una bestia dificil de domar

Page 3: Jaime Casanova - Domando a la bestia Replicación

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

Page 4: Jaime Casanova - Domando a la bestia Replicación

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+)

Page 5: Jaime Casanova - Domando a la bestia Replicación

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

Page 6: Jaime Casanova - Domando a la bestia Replicación

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

Page 7: Jaime Casanova - Domando a la bestia Replicación

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'

Page 8: Jaime Casanova - Domando a la bestia Replicación

Domando a la bestia: replicación

Copyright © 2014, 2ndQuadrant Limited 8

Conclusiones

¿Preguntas?

BDR

Replicación Bi-Direccional (Multi-maestro)