Comment configurer deux serveurs identiques pour le basculement automatique dans PostgreSQL 9.1.
OS
Centos 5
PostgreSQL 9.1 compilé à partir de la source
Le compte utilisateur postgres existe sur les deux machines et possède une clé sans mot de passe ssh pour se connecter aux deux machines.
Ma configuration actuelle:
Configuration du serveur maître:
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
Serveur de secours
postgresql.conf et pg_hba.conf sont identiques à ce qui est configuré sur le serveur maître.
recovery.conf:
standby_mode = 'on'
primary_conninfo = 'host=10.0.66.1'
trigger_file = '/opt/pgsql91/data/trigger.txt'
Grâce à hzRoot, je comprends maintenant comment basculer le serveur de veille en maître.
À l'aide des commandes suivantes, je peux synchroniser le nouvel esclave avec le nouveau maître, puis obtenir la sauvegarde et l'exécution de la réplication.
Sur le nouveau maître (10.0.66.2)
- su - postgres
- touchez trigger.txt dans / opt / pgsql91 / data /
- recovery.conf devient 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 ()";
Sur le nouvel esclave (10.0.66.1)
- créer le fichier recovery.conf: cp recovery.done vers recovery.conf
- vi recovery.conf changer l'adresse IP: primary_conninfo = 'host = 10.0.66.2'
- démarrer postgresql
Mes questions sont donc maintenant:
- Est-ce la bonne façon de changer de rôle?
- Quelqu'un at-il automatisé ce processus, si oui, qu'avez-vous fait?
- Si la réplication synchrone est activée, j'ai remarqué que le nouveau serveur maître ne valide aucune transaction car il attend que l'esclave réponde. Il n'y a cependant pas d'esclave car sur l'autre serveur, l'ancien maître est en panne. Est-ce correct ou dois-je désactiver temporairement la réplication synchrone pendant que le nouvel esclave est arrêté?