Como vai funcionar?
O Host1 vai estar disponível para trabalhar com sua aplicação e o Host2 fica em Stand-by (Ele não pode ser acessado).
Pro algum motivo o Host1 para de responder, e agora o que vai acontecer?
O Host2 assume a posição do Host1 de modo transparente ao usuário, só que podemos ter algum tempo de delay para a sincronização e perder algumas informações.

Configurando servidores
Instalação feita em cima do “Debian Lenny” (Nos dois servidores) que utiliza pacotes DEB.
Vamos usar os seguintes software: Postgresql-8.3, postgresql-contrib-8.3, heartbeat-2, nfs-kernel-server e hapm
Instalando software:
apt-get install postgresql-8.3 heartbeat-2 nfs-kernel-server hapm postgresql-8.3-contribVamos criar o WAL no Host2, o arquivo deve ter permissões de escrita e leitura para ambos os servidores, com o user root:
mkdir /psql-archive<br />chown postgres.postgres /pgsql-archive<br />echo "/psql-archive IP_HOST1 (rw,sync,no_subtree_check)" >> /etc/exports<br />exportfs -a<br />su postgres -c "touch /psql-archive/mounted"Criando o WAL no HOST1, o arquivo deve ter permissões de escrita e leitura para ambos os servidores, com o user root:
mkdir /psql-archive<br />chown postgres.postgres /psql-archive<br />mount IP_HOST2:/psql-archive /psql-archiveVamos colocar o WALs ON no Host1. Devemos editar o arquivo “/etc/postgresql/8.3/main/postgresql.conf” colocando o archive_mode como ON e modificando o archive_command (Vamos copiar o Data Base com rsync):
archive_mode = on<br />archive_command = "test -f /psql_archive/mounted && test ! -f /psql_archive/%f && rsync -a %p /psql_archive/%f"Restart no PostgreSQL Host1:
/etc/init.d/Postgresql-8.3 restartFazendo backup de todo Data Base sem para o PostgreSQL Host1:
psql -U postgresCom isso você vai acessar o console do seu PostgreSQL.
select pg_start_backup('nome_do_seu_bkp');<br />pg_start_backup<br />\qApós sair do console vamos gerar backup do banco de dados.
su - postgres<br />cd /var/lib/Postgresql/8.3/<br />tar -zcvf /psql-archive/nome_do_seu_bkp.tar.gz *Isso pode demorar um pouco, dependendo do tamanho do seu Data Base. Após terminar o backup acesse o console do PostgreSQL.
psql -U postgresCom isso você vai acessar o console do seu PostgreSQL.
select pg_stop_backup();<br />pg_stop_backup<br />\qNo Host2 vamos colocar o backup ON:
mv /var/lib/Postgresql/8.3/main /var/lib/Postgresql/8.3/main.old<br />mv /psql-archive/nome_do_seu_bkp.tar.gz /var/lib/Postgresql/8.3/<br />cd /var/lib/Postgresql/8.3/<br />tar -zxvf nome_do_seu_bkp.tar.gz -C /var/lib/Postgresql/8.3/<br />cd main/<br />rm -Rf ./pg_xlog/*Vamos editar o arquivo recovery.conf que está dentro do main/ do $PGDATA:
restore_command = '/usr/lib/postgresql/8.3/bin/pg_standby -d -l -r 3 -s 60 -t /psql_archive/trigger.done /psql_archive %f %p %r 2>>/tmp/pg_standby.log'Start no PostgreSQL Host2:
/etc/init.d/Postgresql-8.3 startCaso você tente acessar agora o console do PostgreSQL do Host2, ele vai dar erro por motivo do Start-by esta ON.
Mais sobre PostgreSQL
- Empresas que usam PostgreSQL (Outras empresas que também usam: FAB (Força Aérea Brasileira), Prefeitura Municipal de Sobral, Vivo, DNOCS, DETRAN, Rede Metropolitana, Apple,BASF,Cisco, OMS (Organização Mundial de Saúde) e outras)
- PostgreSQL: The world’s most advanced open source database








