Como se configura dois servidores idênticos para failover automático no PostgreSQL 9.1.
OS
Centos 5
PostgreSQL 9.1 compilado a partir do código-fonte
A conta de usuário do postgres existe nas duas máquinas e possui uma chave ssh sem senha para conectar-se às duas máquinas.
Minha configuração atual:
Configuração do servidor principal:
postgresql.conf:
listen_address = '*'
wal_level = hot_standby
max_wal_senders = 3
checkpoint_segments = 16
wal_keep_segments = 8
archive_mode = on
archive_command = 'cp "%p" /opt/pgsql91/archive/"%f"'
pg_hba.conf:
host replication all 10.0.66.1/32 trust
host replication all 10.0.66.2/32 trust
Servidor em espera
postgresql.conf e pg_hba.conf são idênticos ao que está configurado no servidor principal.
recovery.conf:
standby_mode = 'on'
primary_conninfo = 'host=10.0.66.1'
trigger_file = '/opt/pgsql91/data/trigger.txt'
Graças ao hzRoot, agora entendo como mudar o servidor do modo de espera para o mestre.
Usando os comandos a seguir, posso sincronizar o novo escravo com o novo mestre e, em seguida, obter o backup e a execução de replicação.
No novo mestre (10.0.66.2)
- su - postgres
- toque em trigger.txt em / opt / pgsql91 / data /
- recovery.conf torna-se recovery.done
- psql -c "; SELECT pg_start_backup ('backup', true)";
- rsync -a -v -e ssh / opt / pgsql91 / data / 10.0.66.1:/opt/pgsql91/data/ --exclude postmaster.pid
- psql -c "; SELECT pg_stop_backup ()";
No novo escravo (10.0.66.1)
- crie o recovery.conf: cp recovery.done em recovery.conf
- vi recovery.conf altere o endereço IP: primary_conninfo = 'host = 10.0.66.2'
- iniciar postgresql
Então, minhas perguntas são agora:
- Essa é a maneira correta de trocar de função?
- Alguém automatizou esse processo? Em caso afirmativo, o que você fez?
- Se a replicação síncrona estiver ativada, notei que o novo servidor mestre não confirmará nenhuma transação porque está aguardando a resposta do escravo. No entanto, não há escravo porque, no outro servidor, o antigo mestre está inoperante. Isso está correto ou preciso desativar temporariamente a replicação síncrona enquanto o novo escravo estiver inativo?