Come si configurano due server identici per il failover automatico in PostgreSQL 9.1.
OS
Centos 5
PostgreSQL 9.1 compilato dalla fonte
L'account utente postgres esiste su entrambe le macchine e ha una chiave ssh senza password per connettersi ad entrambe le macchine.
La mia configurazione attuale:
Configurazione del server principale:
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
Server di standby
postgresql.conf e pg_hba.conf sono identici a quelli configurati sul server principale.
recovery.conf:
standby_mode = 'on'
primary_conninfo = 'host=10.0.66.1'
trigger_file = '/opt/pgsql91/data/trigger.txt'
Grazie a hzRoot, ora capisco come passare il server dallo standby al master.
Utilizzando i seguenti comandi, posso sincronizzare il nuovo slave con il nuovo master e quindi ottenere il backup e l'esecuzione della replica.
Sul nuovo master (10.0.66.2)
- su - postgres
- toccare trigger.txt in / opt / pgsql91 / data /
- recovery.conf diventa 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 ()";
Sul nuovo slave (10.0.66.1)
- creare il file recovery.conf: cp recovery.done in recovery.conf
- vi recovery.conf cambia indirizzo ip: primary_conninfo = 'host = 10.0.66.2'
- avviare postgresql
Quindi le mie domande ora sono:
- È questo il modo corretto di cambiare ruolo?
- Qualcuno ha automatizzato questo processo, in caso affermativo cosa hai fatto?
- Se la replica sincrona è abilitata, ho notato che il nuovo server principale non eseguirà il commit di alcuna transazione perché è in attesa che lo slave risponda. Non esiste uno slave, tuttavia, poiché l'altro server, il vecchio master è inattivo. È corretto o devo disabilitare temporaneamente la replica sincrona mentre il nuovo slave è inattivo?