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é?
la source
Réponses:
Découvrez repmrg :
Cela fait deux choses:
Pour le basculement automatique, repmgrd fait l'affaire et n'est pas un SPOF dans votre réseau, comme pgPool. Cependant, il est toujours important de surveiller tous les démons et de les récupérer après l'échec.
La version 2.0 est sur le point d'être publiée, y compris les RPM.
la source
dans votre fichier recovery.conf, vous devez ajouter une ligne qui indique à postgres de basculer du maître à l'esclave. vous devez ajouter
lorsque vous créez ce fichier sur un chemin donné. les nœuds vont changer. (le fichier n'inclut rien, c'est juste un déclencheur)
vous pouvez trouver des informations supplémentaires sur la réplication en streaming
d'autre part, il sera peut-être possible de le créer automatiquement avec quelques astuces mais utiliser des outils de surveillance et faire du basculement manuel sera mieux ..
la source
Quelqu'un at-il envisagé d'utiliser pgpool-II pour cela?
http://pgpool.projects.postgresql.org/contrib_docs/simple_sr_setting/index.html
J'installe la réplication pour PostgreSQL. Il semble que la partie délicate se passe lorsque le vieux maître revient.
D'après ce que j'ai lu, pgpool semble pouvoir automatiser la plupart de cela. Cependant, je ne suis pas sûr de tirer parti des fonctionnalités de réplication déjà présentes dans PostgreSQL 9.1.
la source