PostgreSQL Prático/Replicação
10 - Replicação
É 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