PostgreSQL Prático/Replicação

10 - Replicação

editar

É o processo de compartilhar e distribuir informações entre diferentes bancos de dados. Estes dados serão mantidos sincronizados e íntegros em relação às regras de integridade referencial e de negócios.


No PostgreSQL algumas formas de realizar replicação são através do contrib dblink e das ferramenta slony e pgcluster.


Para importar o dblink no banco onde queremos replicar:

\i /usr/local/pgsql/contrib/dblink.sql


Exemplo dbLink - Select

select *

from dblink

(

'dbname=pgteste

hostaddr=200.174.40.63

user=paulo

password=paulo

port=5432',


'select nome

from clientes

'


) as t1(nome varchar(30));


Exemplo dbLink - Insert

select

dblink_exec(

'dbname=pgteste

hostaddr=200.174.40.63

user=paulo

password=paulo

port=5432',


'insert into clientes(nome)

values(roger)

'

);


Exemplo dbLink - Update

select

dblink_exec(

'dbname=pgteste

hostaddr=200.174.40.63

user=paulo

password=paulo

port=5432',


'update clientes

set nome=Paulo Rogerio

where id = 18

'

);


Exemplo dbLink - Delete

select

dblink_exec(

'dbname=pgteste

hostaddr=200.174.40.63

user=paulo

password=paulo

port=5432',


'delete from clientes

where id = 18

'

);


Temos o contrib dblink e o projerto slony para replicação de bancos do PostgreSQL.

O dblink não vem ativo por default.


Ativando o dblink:


De fora do banco:

psql -U nomeuser nomebanco < /usr/local/pgsql/contrib/dblink.sql


Ou de dentro do banco:

\i /usr/local/pgsql/contrib/dblink.sql


Funções do dblink:

dblink - para SELECT

dblinkexec - para INSERT, UPDATE e DELETE (remotos)


Tutorial sobre replicação no site da dbExperts - www.dbexperts.com.br

Usado para fazer consultas remotas em bancos do PG


dblink -> select

dblinkexec -> insert, update e delete (remotos)

Dica: Remover postmarter.pid em caso de queda anormal do SGBD


Bons documentos sobre replicação:

- Replicação do PostgreSQL com Slony do Marlon Petry


- Backup Quente no PostgreSQL com Replicação do Sílvio César

http://www.gulbf.com.br/?q=node/33

- Replicando banco de dados PostgreSQL do Rafael Donato

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=4536

Cluster != Replicação

http://savepoint.blog.br/cluster-replicacao/