PostgreSQLLa base de données la plus sophistiquée au monde.
Documentation PostgreSQL 12.21 » Programmation serveur » Décodage logique (Logical Decoding) » Support de la réplication synchrone pour le décodage logique

48.8. Support de la réplication synchrone pour le décodage logique

48.8.1. Aperçu

Le décodage logique peut être utilisé pour construire des solutions de réplication synchrone avec la même interface utilisateur que la réplication synchrone pour la réplication en flux. Pour ce faire, l'interface de la réplication en flux(voir Section 48.3) doit être utilisée pour envoyer les données. Les clients doivent envoyer les messages Standby status update (F)(voir Section 52.4), tout comme le font les clients de la réplication en flux.

Note

Un réplicat synchrone recevant des changements via le décodage logique fonctionnera dans le cadre d'une seule base. Comme, a contrario, synchronous_standby_names concerne actuellement tout le serveur, cela signifie que cette technique ne fonctionnera pas si plus d'une base de données est activement utilisé.

48.8.2. Mises en garde

Dans une configuration de réplication synchrone, un deadlock peut survenir si la transaction a verrouillé des tables du catalogue utilisateur de façon exclusive. Voir Section 48.6.2 pour des informations sur les tables du catalogue utilisateur. Ceci est dû au fait que le décodage logique des transactions peut verrouiller des tables du catalogue pour y accéder. Pour éviter ceci, les utilisateurs doivent éviter de prendre un verrou exclusif sur les tables du catalogue utilisateur. Ceci peut arriver dans les cas suivants :

  • Exécuter un LOCK explicite sur pg_class dans une transaction.

  • Exécuter CLUSTER sur pg_class dans une transaction.

  • Exécuter TRUNCATE sur une table du catalogue utilisateur dans une transaction.

Notez que ces commandes qui peuvent causer des deadlocks concernent non seulement les tables du catalogue utilisateur explicitement indiquées mais aussi aux autres tables du catalogue utilisateur.