Replicação PostgreSQL com RepManager

Embed Size (px)

Citation preview

  1. 1. PostgreSQL: Replicao com RepManager (repmgr) Vinicius Vale
  2. 2. 2 Quem sou Bacharel em Cincia da Computao; MBA em BigData; Especialista Postgresql; Especialista Java/Android; Devops pela 4Linux; Vinicius Aquino do Vale
  3. 3. 3 Conhecendo a 4Linux Metodologia IT Experience - Cenrios reais Cursos prticos, rpidos e baratos de autores feras: www.4shot.com.br Projetos complexos de misso crtica, com infra e desenvolvimento PHP
  4. 4. 4 Cursos prticos, rpidos e baratos de autores feras
  5. 5. 5 Metodologia IT Experience Cenrios reais
  6. 6. 6 Lanamento 4Linux
  7. 7. 7 Ao final da minha palestra 02 Curso Online: Curso SQL para Programadores Cdigo 4800. 01 Elephant.
  8. 8. 8 Ao final da minha palestra
  9. 9. 9 Agenda Replicao Nativa; Limitaes e Problemas; Um novo mundo : RepMgr; Vantagens e Facilidades; Gerenciamento (replicao e failover); Consideraes Finais;
  10. 10. 10 Replicao Nativa - Conceito Rplica? Pra qu? Vantagens: Leituras (OLAP) Failover Desvantagens: Master->Slave Gerenciamento (Virada)
  11. 11. 11 Passo a Passo Master: Criar usurio REPLICATION; Liberar pg_hba; postgresql.conf: wal_level; wal_keep_segments; max_wal_senders.
  12. 12. 12 Passo a Passo Slave (pg_basebackup): postgresql.conf: hot_standby; max_standby_archive_delay; max_standby_streaming_delay.
  13. 13. 13 Passo a Passo Slave: recovery.conf: standby_mode; primary_conninfo; trigger_file.
  14. 14. 14 Limitaes e Problemas Tipos de Replicao Assncrona (default); Sncrona;
  15. 15. 15 Limitaes e Problemas Rplica Assncrona (default): Perda de algumas transaes;
  16. 16. 16 Limitaes e Problemas Rplica Sncrona: Slave parado = Master Parado; Tempo total = master + trfego pela rede + slave + retorno;
  17. 17. 17 Limitaes e Problemas Mltiplas rplicas: Novo Master; O que eu fao com os meus slaves? O que eu fao com meu antigo master?
  18. 18. 18 Repmgr: Um Novo mundo O que ? Desenvolvido pela 2ndQuadrant; Open-Source; Free; Verses: 2.0; 3.0.
  19. 19. 19 Vantagens e Facilidades Gerenciamento de Rplicas: Monitoramento: $ repmgr cluster show; Role | Connection String * master | host=node1 user=repmgr_usr dbname=repmgr_db password=123456 standby | host=node2 user=repmgr_usr dbname=repmgr_db password=123456 Failover (daemon repmgrd); Failback.
  20. 20. 20 Gerenciamento (preparao Postgresql) Gerenciamento de Rplicas: Usurio: $ createuser -s repmgr_usr; Database: $ createdb repmgr_db -O repmgr_usr; pg_hba.conf: host repmgr_db repmgr_usr ip/24 trust; host replication repmgr_usr ip/24 trust;
  21. 21. 21 Gerenciamento (preparao Postgresql) Master postgresql.conf: hot_standby = on; wal_level = hot_standby; max_wal_senders; wal_keep_segments: 9.4 Utiliza slot de replicao; 9.3 Espera-se 5000 (80GB de WAL); archive_mode = on archive_command = 'cd .'
  22. 22. 22 Gerenciamento (repmgr.conf) Local Recomendado: /etc/repmgr/repmgr.conf; repmgr.conf: cluster=DBZ (mesmo para todos os hosts); node=1 (integer nico); node_name=node1 (nico); pg_bindir=/path/to/postgres/bin;
  23. 23. 23 Gerenciamento (repmgr.conf) use_replication_slots=1 conninfo='host=repmgr_node1 user=repmgr dbname=repmgr';
  24. 24. 24 Gerenciamento (repmgr) register Registrar os ns: $ repmgr -f repmgr.conf --verbose master register; $ repmgr -f repmgr.conf --verbose standby register; clone Preparar standby: $ repmgr -D $PGDATA -f repmgr.conf -d repmgr_db -U repmgr_usr --verbose standby clone IP_MASTER
  25. 25. 25 Gerenciamento (repmgr) promote Promover um novo master: $ repmgr -f repmgr.conf --verbose standby promote; follow Seguir novo master: $ repmgr -f repmgr.conf --verbose standby follow.
  26. 26. 26 Gerenciamento (repmgr)
  27. 27. 27 Gerenciamento (repmgr) Converter master com problemas para standby: $ repmgr -f repmgr.conf --force --rsync-only -h novo_master -d repmgr_db -U repmgr_usr --verbose standby clone; Registar o n novamente: $ repmgr -f repmgr.conf --force standby register.
  28. 28. 28 Gerenciamento (repmgrd) Automatic Failover: Witness;
  29. 29. 29 Gerenciamento (repmgrd) Postgresql.conf: shared_preload_libraries = 'repmgr_funcs'; psql -f /usr/share/postgresql/9.0/contrib/repmgr_funcs.sql repmgr_db.
  30. 30. 30 Gerenciamento (repmgrd) repmgr.conf: master_response_timeout; reconnect_attempts; reconnect_interval; failover=[automatic|manual]; promote_command='promote_command.sh'; follow_command='repmgr standby follow -f repmgr.conf'.
  31. 31. 31 Gerenciamento (repmgrd) Iniciando Witness repmgr -d repmgr_db -U repmgr_usr -h IP_MASTER -D $WITNESS_PGDATA -f repmgr.conf witness create; Daemon: $ repmgrd -f repmgr.conf --daemonize > repmgr.log 2>&1.
  32. 32. 32 Consideraes Finais Modelo nativo de replicao Dficil gerenciamento Failover manual e complexo Falha humana Repmgr Facilidade no gerenciamento Failover (manual ou automtico) Fcil controle
  33. 33. 33 Boa Sorte!!
  34. 34. 34 Vinicius Vale [email protected] [email protected] www.4linux.com.br www.4shot.com.br www.viniciusvale.com Sigam-nos @4linux