Un abonnement est le côté aval de la réplication logique. Le nœud où un abonnement a été défini est nommé abonné. Un abonnement définit la connexion à une autre base de données et un ensemble de publications (une ou plus) auxquelles l'abonné veut souscrire.
La base de données abonnée se comporte comme n'importe quelle base de données d'une instance PostgreSQL et peut être utilisée comme éditeur pour d'autres bases de données en définissant ses propres publications.
Un nœud abonné peut avoir plusieurs abonnements si besoin. Il est possible de définir plusieurs abonnements entre une même paire éditeur-abonné. Dans ce cas, il faut faire attention à ce que les objets des publications auquelles l'abonné a souscrit ne se chevauchent pas.
Chaque abonnement recevra les changements par un slot de réplication (voir Section 26.2.6). Des slots de réplications temporaires supplémentaires peuvent être nécessaires pour la synchronisation initiale des données d'une table contenant des données pré-existantes.
   Un abonnement de réplication logique peut être un serveur standby pour de
   la réplication synchrone (voir Section 26.2.8).
   Le nom du serveur standby correspond par défaut au nom de l'abonnement. Un
   nom alternatif peut être indiqué avec le paramètre
   application_name dans les informations de connexion à
   l'abonnement.
  
   Les abonnements sont sauvegardés par pg_dump si
   l'utilisateur courant a des droits de superutilisateur. Si ce n'est
   pas le cas, un message d'avertissement est renvoyé et les abonnements ne sont pas
   sauvegardés. En effet, les informations d'abonnements contenues dans
   pg_subscription ne sont pas consultables par
   des utilisateurs dotés de droits moins importants.
  
Un abonnement est ajouté en utilisant CREATE SUBSCRIPTION. Il peut être arrêté/repris à n'importe quel moment en utilisant la commande ALTER SUBSCRIPTION et il peut être supprimé par la commande DROP SUBSCRIPTION.
Quand un abonnement est supprimé puis recréé, les informations de synchronisation sont perdues. Cela signifie que les données doivent être resynchronisées ensuite.
La définition d'un schéma n'est pas répliquée, et les tables publiées doivent exister sur la base abonnée. Seules des tables standards peuvent accueillir des données répliquées. Par exemple, il n'est pas pas possible de répliquer dans une vue.
La correspondance entre les tables de l'éditeur et de l'abonné est réalisée en utilisant le nom entièrement qualifié de la table. La réplication entre des tables portant un nom différent sur la base abonnée n'est pas supportée.
   La correspondance sur les colonnes d'une table se fait aussi par nom.
   L'ordre des colonnes dans la table sur le serveur abonné ne correspond pas
   forcément à l'ordre sur le serveur publieur. Les types de données n'ont pas
   non plus besoin de correspondre, à partir du moment où la représentation
   textuelle de la donnée puisse être convertie vers le type de données cible.
   Par exemple, vous pouvez répliquer d'une colonne de type
   integer vers une colonne de type bigint. La table
   cible peut aussi avoir des colonnes supplémentaires non fournies par la
   table publiée. Ce type de colonne sera rempli avec la valeur par défaut
   fournie dans la définition de la table cible.
  
    Comme présenté plus tôt, chaque abonnement (actif) reçoit les
    changements depuis un slot de réplication du serveur distant
    (publication). Normalement, le slot de réplication distant est créé
    automatiquement en utilisant la commande
    CREATE SUBSCRIPTION et il est supprimé
    automatiquement en utilisant la commande
    DROP SUBSCRIPTION.
    Dans certaines situations, il peut être utile ou nécessaire de
    manipuler les abonnements ainsi que les slots de réplication
    sous-jacents de façon séparées. Voici quelques exemples :
    
       Lorsqu'en créant un abonnement, le slot de réplication
       correspondant existe déjà. Dans ce cas, l'abonnement peut être
       créé en utilisant l'option create_slot = false
       pour réaliser l'association avec le slot existant.
      
       Lorsqu'en créant un abonnement, le serveur distant n'est pas
       disponible ou dans un état indéfini. Dans ce cas, l'abonnement
       peut être créé en utilisant l'option  connect = false.
       Le serveur distant ne sera jamais contacté. C'est la méthode
       utilisée par  pg_dump.
       Le slot de réplication distant devra alors être créé manuellement
       avant que l'abonnement puisse être activé.
      
       Lorsqu'on supprime un abonnement et que le slot de réplication doit
       être conservé, par exemple lorsqu'une base abonnée est
       déplacée vers un serveur différent et sera activée depuis cette
       nouvelle localisation.
       Dans ce cas, il faut dissocier le slot de réplication de
       l'abonnement correspondant en utilisant la commande
       ALTER SUBSCRIPTION avant de supprimer
       l'abonnement.
      
       Lorsque l'on supprime un abonnement et que le serveur distant n'est
       pas joignable. Dans ce cas, il faut aussi dissocier le slot de
       réplication de l'abonnement correspondant en utilisant
       ALTER SUBSCRIPTION avant de supprimer
       l'abonnement.
       Si l'instance distante n'existe plus, aucune action supplémentaire
       n'est nécessaire. Si, par contre, l'instance distante est
       simplement temporairement injoignable, le slot de réplication
       devrait être supprimé manuellement, sinon l'instance va
       persévérer à conserver ses fichiers WAL jusqu'à saturation de
       l'espace disque disponible. Ces cas doivent être traités avec
       beaucoup de précautions.