système pgpool
middlewareplacé entre des serveurs PostgreSQL et des clients.
backupsur plusieurs systèmes permettant la continuation de service en cas de défaillance.
online recoveryil sera nécessaire que les architectures matérielles et logicielles (systèmes d'exploitation) soient identiques.
La technique de réplication par streaming
est apparue dans PostgreSQL 9.0, elle permet de simplifier grandement
la mise en œuvre de la réplication autonome, c'est à dire sans recourir à d'autres services que ceux fournis par postgres.
Selon le type d'installation le répertoire de bases de la configuration base_conf peut être dans /usr/local/etc/ ou dans /etc/pgpoo-II/ ou encore dans /etc/pgpoo-II-93/...
fonctionnalité | mode opérationnel | ||
---|---|---|---|
mode de base | réplication | primaire/secondaire | |
maintien de connexion | oui | oui | oui |
réplication | non | oui | oui * |
répartition des lectures | non | oui | oui |
tolérance de pannes | oui | oui | oui |
restauration à chaud | non | oui | oui |
répartition lectures/écritures | non | non | oui |
nombre de serveurs requis | ≥1 | ≥2 | ≥2 |
le mode de base
correspond au mode le plus simple utilisé pour limiter les connexions au serveurs ou pour activer la tolérance de pannes.
La tolérance de pannes imposera bien sûr l'utilisation de plusieurs serveurs de bases de données qui devront de préférences utiliser un mécanisme de
réplication tel que celui permis par le streaming
à partir de la version 9 de postgres.
paramètre | description |
---|---|
paramètres spécifiques aux serveurs pilotés | |
backend_hostnamenum | adresse IP du serveur n° num, |
backend_portnum | port TCP du serveur n° num, |
backend_flagnum | mode de tolérance de pannes du serveurs n° num : activé si ALLOW_TO_FAILOVER, inactif si DISALLOW_TO_FAILOVER. |
paramètres globaux de maintien de connexion | |
max_pool | nombre maximal de connexions à pgpool |
connection_life_time | durée de maintien des connexions au serveurs pilotés |
reset_query_list | liste des commandes SQL (séparées par ;) assurant la fermeture des connexions sur les serveurs pilotés |
Les paramètres de maintien de connexion ne sont pas nécessaires pour n'activer que le mode de tolérance de panne.
num indique le numéro du serveur piloté par pgpool, le premier aura la valeur 0.
paramètre | description |
---|---|
paramètres spécifiques aux serveurs pilotés | |
backend_weightnum | pondération de la répartition de charge du serveur n° num, |
paramètres globaux de réplication | |
replication_mode | activation du mode de réplication à la valeur on |
replicate_select | permet de lancer simultanément les SELECT sur toutes les bases si égal à on, mais interdit alors la répartition de charge |
replication_stop_on_mismatch | en cas d'incohérences interrompt la réplication |
serveur primaireet recevant toutes les écritures,
serveur secondairesrecevant les lectures.
paramètre | description |
---|---|
paramètres spécifiques aux serveurs pilotés | |
backend_weightnum | pondération de la répartition de charge du serveur n° num, |
paramètres globaux de réplication | |
master_slave_mode | activation du mode primaire/secondaire à la valeur on |
replication_mode | permet de lancer les écritures uniquement sur le serveur primaire. |
on line recovery
online recoverypermet de réintégrer depuis pgpool un serveur qui aurait été défaillant.
paramètre | description |
---|---|
paramètres spécifiques aux serveurs pilotés | |
backend_data_directorynum | chemin de stockage du serveur n° num, |
paramètres globaux de réplication | |
recovery_user | le nom de l'utilisateur postgres dédié à lancer la restauration, |
recovery_password | le mot de passe associé à cet utilisateur, |
recovery_1st_stage_command | la commande à faire exécuter par le serveur primaire pour initier la restauration (opération non bloquante), |
recovery_2st_stage_command | la commande à faire exécuter par le serveur primaire pour terminer la restauration (opération bloquante). |
show pool_status;
pcp_attach_node num_node
pcp_detach_node num_node
C'est donc un couche logicielle présentant une API conforme à PostgreSQL. En raison de sa transparence, le systèmes pgpool-II peut être directement utilisé par les applications sans nécessiter de modifications.