PostgreSQLLa base de données la plus sophistiquée au monde.
Documentation PostgreSQL 10.23 » Administration du serveur » Réplication logique » Restrictions

31.4. Restrictions

La réplication logique souffre actuellement des restrictions suivantes ou des fonctionnalités manquantes. Elles pourraient être adressées dans les prochaines versions.

  • La structure de la base de données et les commandes DDL ne sont pas répliquées. Le schéma initial peut être copié à la main en utilisant la commande pg_dump --schema-only. Les modifications de schéma suivantes auront besoin d'être synchronisées manuellement. (Notez, néanmoins, qu'il n'est pas nécessaire que les schémas soient strictement identiques des deux côtés.) La réplication logique est robuste quand il y a des modifications de schéma dans une base de données. Quand le schéma est changé sur le publieur et les données répliquées commencent à arriver sur l'abonné mais ne correspondent pas à la structure de la table, la réplication renverra une erreur jusqu'à ce que le schéma soit mis à jour. Dans de nombreux cas, les erreurs intermittentes peuvent être évitées en appliquant des modifcations de schéma à l'abonné en premier.

  • Les données des séquences ne sont pas répliquées. Les données des colonnes de type serial et des colonnes identité, gérées par des séquences, seront bien sûr répliquées comme faisant partie de la table, mais la séquence elle-même affichera toujours la valeur de démarrage sur l'abonné. Si l'abonné est utilisé comme une base de données en lecture seule, alors cela ne devrait pas être un problème. Néanmoins, s'il est nécessaire de faire un switchover ou un failover sur la base de données abonnée, alors les séquences auront besoin d'être mises à jour à leur dernières valeurs, soit en copiant les données courantes du publieur (peut-être en utilisant pg_dump), soit en déterminant une valeur suffisante haute à partir des données de la table.

  • Les commandes TRUNCATE ne sont pas répliquées. Bien sûr, ceci peut se contourner en utilisant DELETE à la place. Pour éviter des appels accidentels à TRUNCATE, vous pouvez supprimer le droit TRUNCATE aux tables.

  • Les Large Objects (voir Chapitre 34) ne sont pas répliqués. Il n'y a pas de contournement pour ça, en dehors d'enregistrer les données dans des tables normales.

  • La réplication est seulement possible pour les tables. Autrement dit, les tables du côté publication et du côté souscription doivent être des tables normales, pas des vues, des vues matérialisées, des tables racines ou des tables externes. Dans le cas des partitions, vous pouvez du coup répliquer une hiérarchie de partitions une à une, mais vous ne pouvez pas répliquer vers une configuration différente du partitionnement. Les tentatives de réplication de tables autre que les tables normales résulteront en une erreur.