Par défaut, le protocole de réplication en streaming de PostgreSQL ne synchronise pas les slots de réplication logique du nœud principal vers le nœud standby. En cas de basculement, le slot est perdu et toutes les souscriptions logiques sont interrompues. PolarDB for PostgreSQL résout ce problème en synchronisant les slots de réplication logique avec le nœud standby, assurant ainsi la continuité des souscriptions après un basculement.
Le basculement des slots de réplication physique n'est pas pris en charge. Pour plus d'informations sur le fonctionnement des slots de réplication, consultez la section Replication slots de la documentation PostgreSQL.
Prérequis
Avant de commencer, vérifiez que :
Votre cluster PolarDB for PostgreSQL exécute PostgreSQL 11 avec une version de révision 1.1.27 ou ultérieure.
Pour vérifier votre version de révision, exécutez la commande suivante :
SHOW polar_version;
Si votre version de révision est antérieure à la 1.1.27, mettez à niveau la version de révision avant de poursuivre.
Activer ou désactiver le basculement des slots de réplication logique
Contrôlez le basculement des slots de réplication logique en définissant le paramètre polar_failover_slot_mode. Configurez ce paramètre dans la console.
Choisir un mode
| Mode | Comportement | Sécurité des données | Cas d'usage recommandé |
|---|---|---|---|
async (par défaut) |
Synchronise les slots de manière asynchrone. Aucune perte de données lors d'un basculement de cluster HA. Le client de réplication logique peut recevoir des données dupliquées après le basculement. Si le client possède des données plus récentes que le nouveau nœud principal après le basculement, il se peut qu'il ait conservé des données perdues durant l'opération. | Aucune perte lors du basculement HA ; doublons possibles | Convient à la plupart des charges de travail lorsque la duplication des données est acceptable |
sync |
Synchronise les slots de manière synchrone. Garantit que le client de réplication logique ne reçoit jamais de modifications en avance sur le nœud standby. Aucune perte de données lors du basculement. | Aucune perte lors du basculement ; voir le cas particulier ci-dessous | Indispensable lorsque la cohérence des données est critique |
off |
Désactive le basculement des slots de réplication logique. | Non applicable | Approprié lorsque le basculement pour la réplication logique n'est pas nécessaire |
Un cas particulier existe en mode sync : si le nœud standby reste déconnecté pendant une période prolongée ou s'il est en cours de reconstruction, la latence de synchronisation entre le nœud principal et le standby peut augmenter au point que le client de réplication logique reçoive des modifications avant le nœud standby. Si un basculement survient dans cette fenêtre, des données peuvent être perdues dans la réplication logique, y compris celles générées sur le nouveau nœud principal. Pour éviter cela, contactez le support technique afin de définir polar_priority_replication_force_wait sur on. Cette configuration empêche le nœud principal d'envoyer des modifications au client de réplication logique tant que le nœud standby ne s'est pas reconnecté ou n'a pas terminé sa reconstruction. Notez que cela réduit la disponibilité de la réplication logique pendant les périodes de déconnexion.
Si les données dupliquées générées par le mode async affectent votre charge de travail, passez au mode sync.
Limites
Le basculement des slots de réplication physique n'est pas pris en charge.