com PostgreSQL
Leonardo Cezar, FISL #14 Porto Alegre
quinta-feira, 4 de julho de 13 1
Sobre o palestrante
DBA por profisso h mais de 10 anos;
Desenvolvedor por diverso;
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
quinta-feira, 4 de julho de 13 2
Agenda
Alta disponibilidade
Redundncia
Balanceamento de carga
Arquitetura
Ferramentas
quinta-feira, 4 de julho de 13 3
O que alta disponibilidade?
quinta-feira, 4 de julho de 13 4
Princpios da AD
Planejamento
Redundncia
Persistncia
Simplicidade (KIS)
quinta-feira, 4 de julho de 13 5
Como identificar?
Acordo de Nvel de Servio
Requisitos no-funcionais
Carga transacional
Tempo de indisponibilidade (downtime)
Servios parados impactam?
quinta-feira, 4 de julho de 13 6
Objetivo
quinta-feira, 4 de julho de 13 7
Objetivo
quinta-feira, 4 de julho de 13 8
Indisponibilidade
Programada
Manuteno, atualizao
No programada
Falha de rede
Falha de software
Falha de hardware
quinta-feira, 4 de julho de 13 9
Indisponibilidade no programada
dias indisponveis
20
18
15
14
10
10
7
5
3
0
95,00% 96,00% 97,00% 98,00% 99,00% 0
99,9%
quinta-feira, 4 de julho de 13 10
Redundncia
quinta-feira, 4 de julho de 13 11
Solues de replicao
quinta-feira, 4 de julho de 13 12
Utilitrios
Log Shipping PgPool-II
Streaming Replication
Slony
PgCluster
Postgres-XC
RubyRep
XDB
DRBD
PyReplica
OMNIpitr
Londiste Sequoia
Wal-E
Bucardo repmgr
quinta-feira, 4 de julho de 13 13
Qual utilizar?
Depende... :-)
Requisitos funcionais
Maturidade da soluo
Suporte
quinta-feira, 4 de julho de 13 14
Balanceamento de carga
quinta-feira, 4 de julho de 13 15
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
quinta-feira, 4 de julho de 13 16
Agrupadores de conexo
quinta-feira, 4 de julho de 13 17
PgBouncer
pgbouncer.ini
[databases]
dbfoo = host=localhost dbname=postgres
listen_addr = *
[pgbouncer]
pool_mode = transaction
min_pool_size = 2000
[...]
quinta-feira, 4 de julho de 13 18
Replicao nativa no Postgres
Master/Slave
Arquivos de log de transao (WAL)
Warm standby
Hot standby
Streaming Replication ([as]sncrono SR)
Bases mais consistentes
Streaming de registros WAL (walsender/walreceiver)
quinta-feira, 4 de julho de 13 19
Streaming Replication
postgresql.conf
wal_level = hot_standby
max_wal_senders = 5
wal_keep_segments = 32
archive_command = rsync %p foo@bar:/
archive/%f
quinta-feira, 4 de julho de 13 20
Streaming Replication (cont.)
pg_basebackup -H <host> -R -D $PGDATA
recovery.conf
primary_conninfo = host=node1
pg_ctl start
pg_ctl promote # switchover
quinta-feira, 4 de julho de 13 21
Sistema operacional AD
Pacemaker
gerenciador de recursos
Corosync
Camada de mensagens
Resource Agent (RA)
Scripts para controle do servio (LSB ou OCFs)
quinta-feira, 4 de julho de 13 22
Arquitetura SR
quinta-feira, 4 de julho de 13 23
Bucardo multimaster
Configurao 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
quinta-feira, 4 de julho de 13 24
O que vem por a?
Replicao multimaster nativa
BIDR (BiDirection Replication)
LLSR (Logical Log Streaming Replication)
1o. passo postgres 9.3
fast failover
arquitetura independente e remastering
BgWorkers customizados
quinta-feira, 4 de julho de 13 25
Prximos eventos
Conferncia 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/
quinta-feira, 4 de julho de 13 26
Obrigado!
lhcezar
lhcezar
lhcezar
quinta-feira, 4 de julho de 13 27