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


Top Related