Alta disponibilidade com PostgreSQL

1.928 visualizações

Publicada em

Esta palestra demonstra alguns elementos relacionados à alta disponibilidade com PostgreSQL. São discutidos assuntos como redundância, replicação e utilitários de gerenciamento de ambientes de contingência: log shipping, WAL, streaming replication e outros.

Espero que seja útil, faça uma boa leitura e qualquer dúvida contate-me!

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

Sem downloads
Visualizações
Visualizações totais
1.928
No SlideShare
0
A partir de incorporações
0
Número de incorporações
80
Ações
Compartilhamentos
0
Downloads
38
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Alta disponibilidade com PostgreSQL

  1. 1. Alta disponibilidade com PostgreSQL Leonardo Cezar, FISL #14 – Porto Alegre 1quinta-feira, 4 de julho de 13
  2. 2. Sobre o palestrante DBA por profissão há mais de 10 anos; Desenvolvedor por diversão; Colaborador em alguns projetos opensource notavelmente relacionados ao PostgreSQL; Colaborador (quase ausente) na comunidade PostgreSQL Brasil. Atualmente trabalhando na DATAPREV Dados Abertos; GIS; Big Data; BI; PostgreSQL 2quinta-feira, 4 de julho de 13
  3. 3. Agenda Alta disponibilidade Redundância Balanceamento de carga Arquitetura Ferramentas 3quinta-feira, 4 de julho de 13
  4. 4. O que é alta disponibilidade? Sistema resiliente com suporte e prevenção à falhas externas em seus subsistemas. 4quinta-feira, 4 de julho de 13
  5. 5. Princípios da AD Planejamento Redundância Persistência Simplicidade (KIS) 5quinta-feira, 4 de julho de 13
  6. 6. Como identificar? Acordo de Nível de Serviço Requisitos não-funcionais Carga transacional Tempo de indisponibilidade (downtime) Serviços parados impactam? 6quinta-feira, 4 de julho de 13
  7. 7. Objetivo Aumentar o tempo médio entre falhas (MTBF) Reduzir o tempo médio entre reparos (MTTR) Minimizar a perda de dados Prover escalabilidade 7quinta-feira, 4 de julho de 13
  8. 8. Objetivo Reduzir SPOFs (pontos de falha) Redução de downtime (período de inatividade) Prover redundância (hardware e software) 8quinta-feira, 4 de julho de 13
  9. 9. Indisponibilidade Programada Manutenção, atualização Não programada Falha de rede Falha de software Falha de hardware 9quinta-feira, 4 de julho de 13
  10. 10. Indisponibilidade não programada 0 5 10 15 20 95,00% 96,00% 97,00% 98,00% 99,00% 99,9% 18 14 10 7 3 0 dias indisponíveis 10quinta-feira, 4 de julho de 13
  11. 11. Redundância Provisionar hardware extra (preferencialmente com as mesmas características) Disponibilizar contingência de componentes de software e serviços Replicar informações e dados 11quinta-feira, 4 de julho de 13
  12. 12. Soluções de replicação Disco compartilhado (não duplica os dados) Réplica de storage Cópia de sistema de arquivos Replicação de instrução SQL Replicação baseada em gatilhos 12quinta-feira, 4 de julho de 13
  13. 13. Utilitários Bucardo PgClusterRubyRep PyReplicaLog Shipping Londiste Postgres-XC Slony XDB repmgr Streaming Replication OMNIpitr Sequoia DRBD PgPool-II Wal-E 13quinta-feira, 4 de julho de 13
  14. 14. Qual utilizar? Depende... :-) Requisitos funcionais Maturidade da solução Suporte 14quinta-feira, 4 de julho de 13
  15. 15. Balanceamento de carga Distribuição de carga em múltiplos servidores Hot Standby (servidor em modo leitura) 15quinta-feira, 4 de julho de 13
  16. 16. PgPool-II pgpool.conf backend_hostname0 = ‘node1’ backend_weight0 = 1 backend_hostname1 = ‘node2’ backend_weight1 = 1 replication_mode = false master_slave_mode = true master_slave_sub_mode = ‘stream’ load_balance_mode = true enable_query_cache = true 16quinta-feira, 4 de julho de 13
  17. 17. Agrupadores de conexão Mantém um cache das conexões com o banco de dados Desonera o impacto das conexões Essencial quando existem muitas conexões (portal web, por exemplo) 17quinta-feira, 4 de julho de 13
  18. 18. PgBouncer pgbouncer.ini [databases] dbfoo = host=localhost dbname=postgres listen_addr = ‘*’ [pgbouncer] pool_mode = ‘transaction’ min_pool_size = 2000 [...] 18quinta-feira, 4 de julho de 13
  19. 19. Replicação nativa no Postgres Master/Slave Arquivos de log de transação (WAL) Warm standby Hot standby Streaming Replication ([as]síncrono SR) Bases mais consistentes Streaming de registros WAL (walsender/walreceiver) 19quinta-feira, 4 de julho de 13
  20. 20. Streaming Replication postgresql.conf wal_level = hot_standby max_wal_senders = 5 wal_keep_segments = 32 archive_command = ‘rsync %p foo@bar:/ archive/%f’ 20quinta-feira, 4 de julho de 13
  21. 21. Streaming Replication (cont.) pg_basebackup -H <host> -R -D $PGDATA recovery.conf primary_conninfo = “host=node1” pg_ctl start pg_ctl promote # switchover 21quinta-feira, 4 de julho de 13
  22. 22. Sistema operacional – AD Pacemaker gerenciador de recursos Corosync Camada de mensagens Resource Agent (RA) Scripts para controle do serviço (LSB ou OCFs) 22quinta-feira, 4 de julho de 13
  23. 23. Arquitetura SR 23quinta-feira, 4 de julho de 13
  24. 24. Bucardo – multimaster Configuração bucardo # aptitude install bucardo # bucardo install # bucardo add database foo host=node1 # bucardo add database bar host=node2 # bucardo add all tables db=foo # bucardo add sync foobar source=default targetdb=bar # bucardo start 24quinta-feira, 4 de julho de 13
  25. 25. O que vem por aí? Replicação multimaster nativa BIDR (BiDirection Replication) LLSR (Logical Log Streaming Replication) 1o. passo postgres 9.3 fast failover arquitetura independente e “remastering” BgWorkers customizados 25quinta-feira, 4 de julho de 13
  26. 26. Próximos eventos Conferência PostgreSQL – PGBR 2013 (antigo PgCon) 15-17, agosto Brasil, Porto Velho, RO http://pgbr.postgresql.org.br Postgres Open 2013; 16-18, setembro, Chicago, US http://postgresopen.org/ PostgreSQL Conference Europe, Dublin, Ireland http://2013.pgconf.eu/ 26quinta-feira, 4 de julho de 13
  27. 27. Obrigado! lhcezar lhcezar lhcezar 27quinta-feira, 4 de julho de 13

×