Replicação PostgreSQL com RepManager

921 visualizações

Publicada em

Palestra sobre Replicação PostgreSQL com repmanager. O evento ocorreu em Porto Alegre na data de 09/07/2015 no FISL 16.

Publicada em: Tecnologia
0 comentários
3 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
921
No SlideShare
0
A partir de incorporações
0
Número de incorporações
13
Ações
Compartilhamentos
0
Downloads
21
Comentários
0
Gostaram
3
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide
  • RankDone será lançado em Agosto e tem como objetivo fazer o rankeamento de candidados para vagas técnicas
  • Outras altetrnativas – Como crescimento vertical, maior capacidade de IO e ferramentas especificas para ambientes OLTP
    * Bucardo
    * Postgres-XC
    * Postgres-XL
  • Total de slaves + 1
    hot_standby – sera mudado por causa dos slaves
    Não obrigatorio, porem recomendado
  • pg_ctl e pg_basebackup não estiverem no PATH.
  • Nunca use localhost no host;
    user/dbname devem ser os mesmos para todos os hosts;
    Outros parametros podem ser diferentes.
  • 1 - Master deve ser registrado primeiro.
    2 – Antes de registar o slave deve-se preparar o standby
  • * Witness porta - (port 5499)
    * Daemon deve estar em todos os servidores envolvidos.
  • Replicação PostgreSQL com RepManager

    1. 1. PostgreSQL: Replicação com RepManager (repmgr) Vinicius Vale
    2. 2. 2 Quem sou ➢Bacharel em Ciência da Computação; ➢MBA em BigData; ➢Especialista Postgresql; ➢Especialista Java/Android; ➢Devops pela 4Linux; Vinicius Aquino do Vale
    3. 3. 3 Conhecendo a 4Linux ➢ Metodologia IT Experience - Cenários reais ➢ Cursos práticos, rápidos e baratos de autores feras: www.4shot.com.br ➢ Projetos complexos de missão crítica, com infra e desenvolvimento PHP
    4. 4. 4 Cursos práticos, rápidos e baratos de autores feras
    5. 5. 5 Metodologia IT Experience Cenários reais
    6. 6. 6 Lançamento 4Linux
    7. 7. 7 Ao final da minha palestra ➢ 02 Curso Online: ➢ Curso SQL para Programadores – Código 4800. ➢ 01 Elephant.
    8. 8. 8 Ao final da minha palestra
    9. 9. 9 Agenda ➢Replicação Nativa; ➢Limitações e Problemas; ➢Um novo mundo : RepMgr; ➢Vantagens e Facilidades; ➢Gerenciamento (replicação e failover); ➢Considerações Finais;
    10. 10. 10 Replicação Nativa - Conceito ➢Réplica? Pra quê? Vantagens: ➢Leituras (OLAP) ➢Failover Desvantagens: ➢Master->Slave ➢Gerenciamento (Virada)
    11. 11. 11 Passo a Passo Master: ➢ Criar usuário – 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 Limitações e Problemas ➢Tipos de Replicação ➢Assíncrona (default); ➢Síncrona;
    15. 15. 15 Limitações e Problemas ➢ Réplica Assíncrona (default): ➢ Perda de algumas transações;
    16. 16. 16 Limitações e Problemas ➢ Réplica Síncrona: ➢ Slave parado = Master Parado; ➢ Tempo total = master + tráfego pela rede + slave + retorno;
    17. 17. 17 Limitações e Problemas Múltiplas réplicas: ➢ Novo Master; ➢ O que eu faço com os meus slaves? ➢ O que eu faço com meu antigo master?
    18. 18. 18 Repmgr: Um Novo mundo ➢ O que é? ➢ Desenvolvido pela 2ndQuadrant; ➢ Open-Source; ➢ Free; ➢ Versões: ➢ 2.0; ➢ 3.0.
    19. 19. 19 Vantagens e Facilidades Gerenciamento de Réplicas: ➢ 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 (preparação Postgresql) Gerenciamento de Réplicas: ➢ Usuário: ➢$ 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 (preparação Postgresql) ➢ Master – postgresql.conf: ➢ hot_standby = on; ➢ wal_level = hot_standby; ➢ max_wal_senders; ➢ wal_keep_segments: ➢9.4 – Utiliza slot de replicação; ➢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 nós: ➢ $ 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 Considerações Finais ● Modelo nativo de replicação ● Díficil gerenciamento ● Failover manual e complexo – Falha humana ● Repmgr ● Facilidade no gerenciamento ● Failover (manual ou automático) – Fácil controle
    33. 33. 33 Boa Sorte!!
    34. 34. 34 Vinicius Vale vinicius.aquino@4linux.com.br aquino.vale@gmail.com www.4linux.com.br www.4shot.com.br www.viniciusvale.com Sigam-nos @4linux

    ×