Você está na página 1de 4

Replicao de Banco de Dados

Replicar preciso
* Aumenta a disponibilidade
- Mesmo site
- Site remoto
* Distribuio de carga
- Leitura
- Escrita (maior desfio)
- Funes
Replicao Nativa do PostgreSQL
* Master - Mltiplos Slaves
- A partir do Master
- A partir de outro Slave (Cascata)
A replicao no postgreSQL s existe, desde que se tenha um log shipping ou gerao de
arquivamento, a partir do postgreSQL 9.0 tem a replicao por fluxo embutido.
No PostgreSQL 9.4 temos a replicao de master para mltiplos slaves e um slave pode se
conectar a um master, tendo um slave na rede pode se conectar outros slaves a um slave
tendo assim uma replicao em cascata.
*Streaming
- Replica utilizando uma conexo normal PostgreSQL
- Replica todo o Cluster
Enquanto no Log Shipping tem que aguardar o arquivo estar completo para ser transmitido e
por padro o PostgreSQL de 16Mb a informao no replicada.
Ja no Cluster o que alguns consideram desvantagem que ele no atualiza somente uma
tabela ou uma instruo ele atualiza tudo .
* Permite Hot-Standby
Os servidores slaves vo permitir leitura ou seja pode-se dar um SELECT no servidor.
* Replica Sncrona
Os servidores Slaves vo estar no mesmo tempo do servidor Master, na falha do servidor
Master os servidores Slaves tem o mesmo contedo que o Master tinha.
Este processo tem uma perda de desempenho de aproximadamente 50%, pois temos que
aguardar a informao ser salva no Master e depois no Slave isso estamos falando em
servidores no mesmo site, com redes com boas performances.
* Replicao Assncrona
No caso da replicao assncrona o servidor Slave vai estar sempre com um delay em relao
ao Master, em alguns casos, onde os bancos com pouca escrita este delay praticamente
imperceptvel, porem ela utilizada na grande maioria em replicaes de longa distncia com
latncias muito altas.

Alm da replicao nativa no PostgreSQL, temos tambm a replicao lgica.


Se houver a necessidade de uma maior granularidade.
* Slony
- Replicao Master mltiplos Slaves
Pode ser escolhido at a tabela especifica para ser replicada.
* Bucardo
- Master mltiplos Slaves
- Master multi-Master (Diviso de Processamentos)
Muito utilizado em excesso de funes onde exige um processamento muito alto.
* xDB - EnterpriseDB
- Assim como Bucardo + suporte a replicao SGDBs
Faz replicao entre bancos de dados diferentes. ex.(De um PostgreSQL para um Oracle).
- Ferramenta Grfica de Administrao
Uma configurao rapida de replicao.
Servidor Mater
Ajustar o arquivo postgreSQL.conf, a partir de um sql pado.
* listen_addresses, wal_level, wal_keep_segments e max_wal_senders
Ajustar o arquivo pg_hba.conf
* Criar entrada para o Usuario de replicao.
Reiniciar o PostgreSQL.
Criar o Usuario de replicao.
1 Passo
Editar o arquivo postgresql.conf
a) Localize a linha listen_addresses, normalmente ela esta comentada, descomente a linha e
altere o 'localhost' para 'localhost,IP_DA_MAQUINA'.
b) Localize a linha wal_level, normalmente ela esta comentada, descomente a linha e altere
aps o sinalde iqual a palavra Minimal para hot_standby, se no o postgresql nao replica.
c) Localize a linha wal_keep_segments, altere o valor de 0 (zero) para exemplo 10 em um
banco que escreve pouco e podendo alterar para 100 ou 1000 dependendo da quantidade de
gravao gerada pelo banco.
d) Localize a linha max_wal_senders, descomente a linha e informe a quantidade de replicas
que se vai ter.
Aps editar salva e sai do arquivo.
2 Passo
Editar o arquivo pg_hba.conf

Vai ao final do arquivo e de entrada com a seguinte linha:


host replication
replicador
0.0.0.0/0
trust
Onde host o nome da entrada, replication o nome do banco de dados fictcio para que o
postgres entenda que ser replicado, 0.0.0.0/0 deve ser inserido o ip do servidor slave (que vai
receber a replicao) e trust para no pedir senha, pode ser colocado md5 tambm.
Aps editar salva e sai do arquivo.
3 Passo
Reinicie o banco.
4 Passo
Criar o usurio padro.
a) sudo postgres
b) psql
c) create user replicador replication;
d) \q
Servidor Slave
* Parar o postgreSQL
* Fazer pg_basebackup
* Criar recovery.conf
* Ajustar mascara do diretrio
* Iniciar o PostgreSQL
1 Passo
Parar o PostgreSQL
service postgresX stop
2 Passo
Remover o banco de dados atual que tenha no banco.
rm -RF /var/lib/pgsql/9.4/data/*
Logar como Postgres, pois ele o dono do cluster para usar a ferramenta pg_basebackup.
pg_basebackup -D /var/lib/pgsql/9.4/data/ -h 0.0.0.0 -U replicador
Para quem no conhece o pg_basebackup o parmetro -D e o diretrio onde o backup vai cair,
o diretrio deve estar vazio por esse motivo foi removido o contedo da pasta /data, o -h ser
o ip do servidor Master, e o -U nome do usurio criado para replicao.
3 Passo
Criar um arquivo recovery.conf no diretrio /var/lib/pgsql/9.4/data/ com o seguinte contedo.
#recovery.conf
standby_mode=on
primary_conninfo='host=IP_Master user=replicador application_name=nome_servidor_slave'
trigger_file='/tmp/pgtrigger'

Salve e saia.
4 Passo
Reiniciar o postgreSQL
Como saber se o postgres esta replicando?
No Slave digite:
ps aux | grep postgres
se tiver a linha
postgres: wal receiver process
No Master digite
ps aux | grep postgres
se tiver a linha wal send process replicador ip_slave esta replicando
Como Promover um Slave a Master?
Como saber se uma maquina esta em modo de replicao?
No banco de dados entre com o cdigo: select pg_is_in_recovery();
A funo ira retornar um "t" de true se a maquina for slave.
Promovendo:
Como usurio postgres criado um arquivo trigger.
touch /tmp/pgtrigger "Este foi o nome configurado no recovery.conf"
pronto agora ele j master.