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 28/05/2020 10:30:57

agi.v
Membre

replication logique master slave synchrone blocage

Bonjour à tous !
Je me suis tourné vers différentes communautés sur postgresql pour ce souci mais je n'ai malheureusement pas eu de réponse (ou hors sujet).
Je travaille avec postgresql 10 sur deux serveurs ubuntu 18.04 TLS. Je cherche à faire une réplication master-slave en synchrone. J'ai suivi ce tuto https://linuxconfig.org/how-to-create-a … postgresql.
Une fois arrivé au bout j'ai quelques incohérences mais je ne sais pas d'où vient le problème car je ne suis encore qu'un débutant avec postgresql.
Pour faire un résumé quand je fais une insertion dans la base du maître elle est normalement censé être repliqué en synchrone sur le slave. Sauf que là mon terminal se bloque (sur le maître) et au bout de plusieurs minutes je suis obligé de faire un ctrl+c pour reprendre la main ce qui interrompt la procedure. Dans les logs j'ai souvent une erreur FATAL me disant que le protocole n'est pas supporté (surement a cause du ctrl+c) et j'ai 2 numéro séparé d'un point qui apparaissent.
Je suis bien embété car c'est un sujet qu'il faut que je finisse.
Pourriez vous m'apporter de votre aide s'il vous plait ?
Merci

Hors ligne

#2 28/05/2020 11:21:49

gleu
Administrateur

Re : replication logique master slave synchrone blocage

Il va falloir donner beaucoup plus de détails que ça. "quelques incohérences", "une erreur FATAL", c'est pas vraiment précis. Il faudrait détailler tout ça.


Guillaume.

Hors ligne

#3 28/05/2020 13:45:05

agi.v
Membre

Re : replication logique master slave synchrone blocage

Bonjour Guillaume !
Merci de votre réponse.
voici les 20 dernières lignes de mes logs sur le serveur esclave
2020-05-27 15:26:09.397 UTC [4097] LOG:  database system is shut down
2020-05-27 15:26:09.554 UTC [4369] LOG:  listening on IPv4 address "127.0.0.1", port 5432
2020-05-27 15:26:09.554 UTC [4369] LOG:  listening on IPv4 address "127.0.1.1", port 5432
2020-05-27 15:26:09.554 UTC [4369] LOG:  listening on IPv6 address "::1", port 5432
2020-05-27 15:26:09.555 UTC [4369] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2020-05-27 15:26:09.571 UTC [4370] LOG:  database system was shut down at 2020-05-27 15:26:09 UTC
2020-05-27 15:26:09.576 UTC [4369] LOG:  database system is ready to accept connections
2020-05-27 15:26:10.141 UTC [4377] [unknown]@[unknown] LOG:  incomplete startup packet
2020-05-28 09:15:54.400 UTC [4369] LOG:  received fast shutdown request
2020-05-28 09:15:54.403 UTC [4369] LOG:  aborting any active transactions
2020-05-28 09:15:54.406 UTC [4369] LOG:  worker process: logical replication launcher (PID 4376) exited with exit code 1
2020-05-28 09:15:54.411 UTC [4371] LOG:  shutting down
2020-05-28 09:15:54.424 UTC [4369] LOG:  database system is shut down
2020-05-28 09:15:54.600 UTC [6569] LOG:  listening on IPv4 address "127.0.0.1", port 5432
2020-05-28 09:15:54.600 UTC [6569] LOG:  listening on IPv4 address "127.0.1.1", port 5432
2020-05-28 09:15:54.600 UTC [6569] LOG:  listening on IPv6 address "::1", port 5432
2020-05-28 09:15:54.601 UTC [6569] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2020-05-28 09:15:54.621 UTC [6570] LOG:  database system was shut down at 2020-05-28 09:15:54 UTC
2020-05-28 09:15:54.628 UTC [6569] LOG:  database system is ready to accept connections
2020-05-28 09:15:55.186 UTC [6577] [unknown]@[unknown] LOG:  incomplete startup packet

Sur le serveur maitre je suis obligé d'interrompre l'action car au bout de plusieurs minutes le terminal est toujours bloqué. Donc je fais un ctrl+c pour reprendre la main.
On dirait que le serveur maître envoie les données en stream logique mais que le serveur esclave ne les recoit jamais.
Avez vous un conseils pour m'aider s'il vous plait ?
Merci

Hors ligne

#4 28/05/2020 13:57:09

gleu
Administrateur

Re : replication logique master slave synchrone blocage

Le titre de la discussion est "replication logique master slave synchrone blocage" et l'article mentionné permet la création d'un cluster de réplication physique asynchrone, ce qui est totalement différent (deux grosses différences en tout cas, la première sur le côté physique/logique et la deuxième sur le côté synchrone/asynchrone).

Les traces indiquées montrent le démarrage d'un serveur autonome, pas d'un serveur secondaire. Le message "database system is ready to accept connections" l'indique très clairement (ce serait "read only connections" dans le cas contraire).

Bref, il semble clair que la méthode de mise en place du secondaire est erronée.


Guillaume.

Hors ligne

#5 28/05/2020 14:00:24

agi.v
Membre

Re : replication logique master slave synchrone blocage

Merci Guillaume pour cet éclairage.
Je suis encore un débutant avec postgresql mais je souhaite apprendre. J'ai suivi ce tuto https://linuxconfig.org/how-to-create-a … postgresql
Avez vous une recommandation a me faire pour faire une replication logique en synchrone ? Ou un bon tuto a me conseiller ?
Merci

Hors ligne

#6 28/05/2020 14:15:55

agi.v
Membre

Re : replication logique master slave synchrone blocage

@gleu souhaitez vous que je vous poste m'aider mon postgresql.conf afin de pouvoir ?
Merci

Hors ligne

#7 28/05/2020 14:35:33

gleu
Administrateur

Re : replication logique master slave synchrone blocage

Lire la doc (https://docs.postgresql.fr/12/logical-replication.html) me paraît une bonne idée pour commencer. Ensuite, pourquoi pas un tutoriel. Mais un tutoriel ne sert à rien si vous ne connaissez pas les bases.


Guillaume.

Hors ligne

#8 28/05/2020 14:39:02

agi.v
Membre

Re : replication logique master slave synchrone blocage

merci @gleu c'est vrai que c'est la base la doc.
Je vais faire quelques modifications en suivant la doc et je reviens vers vous dès que j'ai fini et testé.
Merci

Hors ligne

#9 28/05/2020 16:05:52

agi.v
Membre

Re : replication logique master slave synchrone blocage

rebonjour @gleu
je vous fournir un extrait de mes logs respectivement maitre et esclave.
maitre :
2020-05-28 14:03:14.878 UTC [4559] replicator@employees ERROR:  publication "mypub" does not exist
2020-05-28 14:03:14.878 UTC [4559] replicator@employees CONTEXT:  slot "mysub", output plugin "pgoutput", in the change callback, associated LSN 0/168F8B0

esclave :CONTEXT:  slot "mysub", output plugin "pgoutput", in the change callback, associated LSN 0/168F8B0
2020-05-28 14:04:10.313 UTC [7614] LOG:  worker process: logical replication worker for subscription 16389 (PID 7968) exited with exit code 1
2020-05-28 14:04:15.321 UTC [7969] LOG:  logical replication apply worker for subscription "mysub" has started
2020-05-28 14:04:15.338 UTC [7969] ERROR:  could not receive data from WAL stream: ERROR:  publication "mypub" does not exist
    CONTEXT:  slot "mysub", output plugin "pgoutput", in the change callback, associated LSN 0/168F8B0
2020-05-28 14:04:15.340 UTC [7614] LOG:  worker process: logical replication worker for subscription 16389 (PID 7969) exited with exit code 1
2020-05-28 14:04:20.348 UTC [7975] LOG:  logical replication apply worker for subscription "mysub" has started
2020-05-28 14:04:20.371 UTC [7975] ERROR:  could not receive data from WAL stream: ERROR:  publication "mypub" does not exist
    CONTEXT:  slot "mysub", output plugin "pgoutput", in the change callback, associated LSN 0/168F8B0
2020-05-28 14:04:20.373 UTC [7614] LOG:  worker process: logical replication worker for subscription 16389 (PID 7975) exited with exit code 1

Pourtant mypub est bien créée sur le master et mysub est bien créée sur l'escalve. Avez vous un conseil ?

et j'en profite pour vous remercier car vous m'aidez beaucoup.

Hors ligne

#10 28/05/2020 16:41:42

gleu
Administrateur

Re : replication logique master slave synchrone blocage

Clairement, mypub n'existe pas. un "SELECT * FROM pg_publications" le montrera. Il faudrait aussi montrer les commandes exécutées, et le résultat. Mais bon, mypub n'existe pas.


Guillaume.

Hors ligne

#11 28/05/2020 17:01:57

agi.v
Membre

Re : replication logique master slave synchrone blocage

Rebonjour,
La requete sql ci dessus ne fonctionne pas. En revanche j'ai la liste des publication sur le master.
J'ai une table/tableau avec name=mypub | owner =postgres | all tables = f | inserts = t | updates = t | deletes= t;
A moins que je me trompe (chose possible) il me semble bien que la publication mypub est là.
Comment puis-je vous partager une capture ?
Merci

Hors ligne

#12 28/05/2020 17:04:37

agi.v
Membre

Re : replication logique master slave synchrone blocage

Rebonjours,
La commande est select * from pg_publication; sans le S a la fin.
J'obtiens presque le même résultat indiquant que mypub existe bien
merci

Hors ligne

#13 29/05/2020 08:28:53

agi.v
Membre

Re : replication logique master slave synchrone blocage

Bonjour @gleu,
Serait-il possible que le système me dise que la publication mypub n'existe pas alors qu'il l'affiche si j'ai créé la publication avant la table cible ?
Merci de votre aide.

Hors ligne

#14 29/05/2020 21:31:29

gleu
Administrateur

Re : replication logique master slave synchrone blocage

Je pense qu'il va falloir nous donner les requêtes SQL que vous avez exécuté pour qu'on puisse essayer de comprendre ce qu'il se passe. Quant au nom de la publication, il est en minuscule ou autrement ? j'aimerais avoir le résultat EXACT de la requête "SELECT * FROM pg_publication" tel qu'exécuté avec psql.


Guillaume.

Hors ligne

#15 01/06/2020 10:46:18

agi.v
Membre

Re : replication logique master slave synchrone blocage

Bonjour Guillaume,
Désolé de ma réponse tardive. Il s'agisait en fait d'un simple problème de droit, rien de plus.
Merci beaucoup de votre aide.

Hors ligne

Pied de page des forums