Postgresql et la réplication logique

November 27, 2017
PostgreSQL docker replication pgfr

PostgreSQL et la réplication logique

Cet article va tester la nouvelle fonctionnalité disponible depuis PostgreSQL 10.0 : la réplication logique.

Pour en savoir plus, l’excellente documentation de PostgreSQL

La réplication logique va nous permettre de répliquer uniquement certaines tables. Le principe (simplifié) va être le suivant:

Attention: les changements de structures et les commandes DDL ne passent pas dans la réplication logique. Il faudra les rejouer à la main sur le slave.

Plus d’informations ici : restrictions

Attention : les tables doivent avoir une clef primaire ou un index unique. Si ce n’est pas le cas, il faudra définir une replica identity

Il est important que l’utilisateur faisant la réplication (ici replicate) puisse accéder aux données de la table. Il faut donc lui donner les droits en lecture.

Maintenant notre master est prêt et nous allons passer sur le slave.

Bon la c’est moche.. PostgreSQL se plaint que la table n’existe pas. Nous allons donc la créer.

```bash
pea_repl=# create table hashes (id serial, value char(33), primary key(value) ) ;
CREATE TABLE
```

Et refaire notre subscription:

```bash
pea_repl=# CREATE SUBSCRIPTION subhash CONNECTION 'host=pgmaster dbname=pea user=replicate password=Azerty' PUBLICATION pubhash ;
NOTICE:  created replication slot "subhash" on publisher
CREATE SUBSCRIPTION
```

Dans les logs nous pouvons faire ceci :

```bash
2017-11-27 09:16:20.442 UTC [87] LOG:  logical replication apply worker for subscription "subhash" has started
2017-11-27 09:16:20.451 UTC [88] LOG:  logical replication table synchronization worker for subscription "subhash", table "hashes" has started
2017-11-27 09:16:20.472 UTC [88] LOG:  logical replication table synchronization worker for subscription "subhash", table "hashes" has finished
```

A noter que si la table contient des données, elles seront automatiquement copiées

```bash
pea_repl=# select count(*) from hashes ;
 count 
-------
  1000
(1 row)
```

Notre réplication logique est fonctionnelle.

Setup a PostgreSQL cluster with repmgr and pgbouncer

December 22, 2018
PostgreSQL replication pgen repmgr pgbouncer

Mettre en place une streaming replication avec PostgreSQL 10

March 13, 2018
postgresql pgfr

OpenBSD / PostgreSQL / Authentification

November 29, 2017
openbsd postgresql pgfr