PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 10/06/2018 05:57:06

big1
Membre

Replication des données

Bonjour,
en version 10 sous Oracle Linux 6

J'ai créé une publication:

testdb=# CREATE PUBLICATION mypub FOR TABLE article;
CREATE PUBLICATION
testdb=#

Une subscription:

destdb=# CREATE SUBSCRIPTION mysub CONNECTION 'dbname=testdb host=192.168.56.71 user=rep password=Password port=5432' PUBLICATION mypub;
NOTICE:  created replication slot "mysub" on publisher
CREATE SUBSCRIPTION

Mais les données ne sont pas transmises  à la destination:

sur maître

testdb=> table article
;
 idart |   name    | quantity 
-------+-----------+----------
     1 | articolo1 |       20
     2 | articolo2 |       50
     3 | articolo3 |       40
     4 | articolo4 |       40
(4 rows)

sur destination;

destdb=# table article;
 idart | name | quantity 
-------+------+----------
(0 rows)

Or:

testdb=# SELECT application_name, backend_start, state, sent_lsn, write_lsn, flush_lsn, sync_state FROM pg_stat_replication;
 application_name |         backend_start         |  state  | sent_lsn  | write_lsn | flush_lsn | sync_state 
------------------+-------------------------------+---------+-----------+-----------+-----------+------------
 mysub            | 2018-06-10 05:57:27.096689+02 | catchup | 0/704B0A8 | 0/704B0A8 | 0/704B0A8 | async
(1 row)
destdb=# select * from  pg_stat_subscription;
 subid | subname | pid  | relid | received_lsn |      last_msg_send_time       |     last_msg_receipt_time     | latest_end_lsn |        latest_end_time        
-------+---------+------+-------+--------------+-------------------------------+-------------------------------+----------------+-------------------------------
 16392 | mysub   | 1215 |       | 0/704B0A8    | 2018-06-10 05:57:27.100453+02 | 2018-06-10 07:20:23.924671+02 | 0/704B0A8      | 2018-06-10 05:57:27.100453+02
(1 row)

Pourquoi relid (nom de table) est vide?
Dans les logs sur maître:

2018-06-09 22:12:51.861 CEST [9534] LOG:  received replication command: START_REPLICATION SLOT "mysub" LOGICAL 0/0 (proto_version '1', publication_names '"mypub"')
2018-06-09 22:12:51.862 CEST [9534] LOG:  starting logical decoding for slot "mysub"
2018-06-09 22:12:51.862 CEST [9534] DETAIL:  streaming transactions committing after 0/704B0A8, reading WAL from 0/704B070
2018-06-09 22:12:51.862 CEST [9534] LOG:  logical decoding found consistent point at 0/704B070

Merci pour votre aide.

Dernière modification par big1 (10/06/2018 07:45:57)

Hors ligne

#2 10/06/2018 16:53:12

gleu
Administrateur

Re : Replication des données

J'ai fait le test et cela fonctionne pour moi.

Pourquoi relid (nom de table) est vide?

Comme le dit très bien la documentation (https://docs.postgresql.fr/10/monitorin … bscription) : "OID de la relation que le processus worker synchronise ; NULL pour le processus worker apply principal". Donc la ligne renvoyée concerne le worker apply principal.


Guillaume.

Hors ligne

Pied de page des forums