Alta disponibilidade com PostgreSQL

Preview:

DESCRIPTION

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!

Citation preview

Alta disponibilidade com PostgreSQL

Leonardo Cezar, FISL #14 – Porto Alegre

1quinta-feira, 4 de julho de 13

Sobre o palestranteDBA 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; PostgreSQL2quinta-feira, 4 de julho de 13

Agenda

Alta disponibilidade

Redundância

Balanceamento de carga

Arquitetura

Ferramentas

3quinta-feira, 4 de julho de 13

O que é alta disponibilidade?

Sistema resiliente com suporte e prevenção à falhas externas em seus subsistemas.

4quinta-feira, 4 de julho de 13

Princípios da AD

Planejamento

Redundância

Persistência

Simplicidade (KIS)

5quinta-feira, 4 de julho de 13

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

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

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

IndisponibilidadeProgramada

Manutenção, atualização

Não programada

Falha de rede

Falha de software

Falha de hardware

9quinta-feira, 4 de julho de 13

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

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

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

Utilitários

Bucardo

PgClu

ster

RubyRep

PyRe

plicaLog Shipping

Londiste

Postgres-XCSlony

XDB

repmgr

Streaming Replication

OMNI

pitr

SequoiaDRBD

PgPool-IIWal-E

13quinta-feira, 4 de julho de 13

Qual utilizar?

Depende... :-)

Requisitos funcionais

Maturidade da solução

Suporte

14quinta-feira, 4 de julho de 13

Balanceamento de carga

Distribuição de carga em múltiplos servidores

Hot Standby (servidor em modo leitura)

15quinta-feira, 4 de julho de 13

PgPool-IIpgpool.conf

backend_hostname0 = ‘node1’backend_weight0 = 1backend_hostname1 = ‘node2’backend_weight1 = 1replication_mode = falsemaster_slave_mode = truemaster_slave_sub_mode = ‘stream’load_balance_mode = trueenable_query_cache = true

16quinta-feira, 4 de julho de 13

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

PgBouncerpgbouncer.ini

[databases]dbfoo = host=localhost dbname=postgreslisten_addr = ‘*’[pgbouncer]pool_mode = ‘transaction’min_pool_size = 2000[...]

18quinta-feira, 4 de julho de 13

Replicação nativa no PostgresMaster/SlaveArquivos de log de transação (WAL)

Warm standbyHot standby

Streaming Replication ([as]síncrono SR)Bases mais consistentesStreaming de registros WAL (walsender/walreceiver)

19quinta-feira, 4 de julho de 13

Streaming Replicationpostgresql.conf

wal_level = hot_standbymax_wal_senders = 5wal_keep_segments = 32archive_command = ‘rsync %p foo@bar:/archive/%f’

20quinta-feira, 4 de julho de 13

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

Sistema operacional – ADPacemaker

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

Arquitetura SR

23quinta-feira, 4 de julho de 13

Bucardo – multimasterConfiguraçã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

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 customizados25quinta-feira, 4 de julho de 13

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

Obrigado!

lhcezar

lhcezar

lhcezar

27quinta-feira, 4 de julho de 13

Recommended