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)
Sur le nouvel esclave (10.0.66.1)
Mes questions sont donc maintenant:
Découvrez repmrg :
repmgr est un ensemble d'outils open source qui aide les administrateurs de base de données et les administrateurs système à gérer un cluster de bases de données PostgreSQL.
En tirant parti de la fonction de redondance d'UC introduite dans PostgreSQL 9, repmgr simplifie considérablement le processus de configuration et de gestion de la base de données avec des exigences de haute disponibilité et d'évolutivité.
repmgr simplifie l'administration et la gestion quotidienne, améliore la productivité et réduit les coûts globaux d'un cluster PostgreSQL en:
- surveiller le processus de réplication; permettant aux administrateurs de base de données d'émettre des données élevées
- les opérations de disponibilité telles que les commutations et les basculements.
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.
dans votre fichier recovery.conf, vous devez ajouter une ligne qui indique à postgres de basculer du maître à l'esclave. vous devez ajouter
trigger_file = '/any/file/to/trigger'
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 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 ..
Quelqu'un a-t-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.