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 Re : Réplication » Gestion fail over un peu compliquée » 17/06/2020 09:00:18

Bonjour,
Merci rjuju pour la doc. Je vais la lire attentivement.
Je souhaiterai m'y plonger plus longtemps et sérieusement mais je vais manquer de temps sur le projet. Il ne me reste qu'un peu  plus d'une semaine.
Merci de votre aide

#2 Re : Réplication » Gestion fail over un peu compliquée » 16/06/2020 14:24:18

Rebonjour rjuju,
Je ne comprends pas très bien comment fonctionne patroni auriez vous une petit tuto bien expliqué pour que je saisisse les détails ?
Merci

#3 Re : Réplication » Réplication logique master master » 16/06/2020 10:55:47

merci pour votre réponse rjuju. Je pense que je vais abandonner cette solution car elle est compliquée a mettre en place pour un simple débutant.

#4 Re : Réplication » Gestion fail over un peu compliquée » 16/06/2020 10:47:13

Merci de votre message rjuju,
Je vais regarder patroni. Avant de me lancer dans quelques choses d'un peu hasardeux, auriez vous quelques conseils/recommandations ou des tuto a me partager ?
Merci

#5 Réplication » Gestion fail over un peu compliquée » 16/06/2020 10:24:38

agi.v
Réponses : 5

Bonjour à tous,
Premièrement je tiens à m'excuser car je suis encore débutant avec postgresql et je n'ai pas toutes les billes.
J'ai actuellement une base A (maitre) et une base B et C (esclaves) qui tournent avec pg10 sur des serveurs ubuntu.
J'ai mis en place une réplication A-->B-->C
Ce que je souhaite c'est faire une gestion du failover. Si A tombe en panne B doit prendre la relève.
Mais le souci c'est que je ne sais pas du tout comment m'y prendre. J'ai vu plusieurs outils comme repmgr ou barman mais je n'arrive pas très bien a les utiliser.
Pourriez vous m'apporter votre aide dans cette problématique ?

Merci

Vincent

#6 Réplication » Réplication logique master master » 11/06/2020 10:15:08

agi.v
Réponses : 2

Bonjour à vous tous !
Je suis très heureux de vous retrouver.
Je me permets de contacter la communauté car j'ai un souci un peu spécial (je trouve). Je recherche a faire une réplication de données master master en synchrone en un serveur A et un serveur B
J'ai donc créé une publication sur une table des deux cotés puis une subscription faisant référence au coté inverse:
pubA--> subB
subA <-- pubB

je pense que je ne suis pas très loin mais voila dans les logs apparement j'ai un souci avec des duplications de clé primaire.

Voila comment j'ai créé la table p_assets sur les deux serveurs :

--- uuid ---
CREATE EXTENSION IF NOT EXISTS "uuid-ossp"
    SCHEMA public
    VERSION "1.1";
--- ./uuid ---
---------------------------------------------------------------------------------------------------------------------------------------------------
--- p_assets ---
CREATE TABLE public.p_assets (
    assetguid UUID NOT NULL DEFAULT public.uuid_generate_v4(),
    folderguid UUID,
    assetname text,
    assetalt text,
    assetcreatedat timestamp without time zone,
    assetmodifiedat timestamp without time zone,
    assetistrashbin boolean,
    assetisvisible boolean,
    assettype text,
    assetformat text,
    assetsize integer,
    asseturlorignal text,
    asseturlsmall text,
    asseturlmedium text,
    asseturlbig text,
    assettags jsonb,
    assetcollection jsonb,
    assetworkroom jsonb,
    assetowner text,
    assetteam text,
    hashcode text
);

ALTER TABLE public.p_assets OWNER TO postgres;

ALTER TABLE ONLY public.p_assets
    ADD CONSTRAINT pk__p_assets PRIMARY KEY (assetguid);

CREATE INDEX idx_p_assets_assetguid ON public.p_assets USING btree(assetguid);
--- p_assets ---

puis j'ai inséré des valeurs :
INSERT INTO p_assets(assetname) VALUES ('A1');
INSERT INTO p_assets(assetname) VALUES ('B2');
INSERT INTO p_assets(assetname) VALUES ('A3');
INSERT INTO p_assets(assetname) VALUES ('B4');

sur le serveur B apparement pas de souci (niveau logs)
mais sur le serveur A.....un extrait des logs serait plus parlant....

2020-06-11 08:13:34.035 UTC [5510] LOG:  logical replication apply worker for subscription "suba" has started
2020-06-11 08:13:34.049 UTC [5510] ERROR:  duplicate key value violates unique constraint "pk__p_assets"
2020-06-11 08:13:34.049 UTC [5510] DETAIL:  Key (assetguid)=(66c79969-c8bf-493e-99ea-9df057b0dd1a) already exists.
2020-06-11 08:13:34.051 UTC [4407] LOG:  worker process: logical replication worker for subscription 16502 (PID 5510) exited with exit code 1
2020-06-11 08:13:39.056 UTC [5511] LOG:  logical replication apply worker for subscription "suba" has started
2020-06-11 08:13:39.071 UTC [5511] ERROR:  duplicate key value violates unique constraint "pk__p_assets"
2020-06-11 08:13:39.071 UTC [5511] DETAIL:  Key (assetguid)=(66c79969-c8bf-493e-99ea-9df057b0dd1a) already exists.
2020-06-11 08:13:39.073 UTC [4407] LOG:  worker process: logical replication worker for subscription 16502 (PID 5511) exited with exit code 1

Pouvez vous me dire comment faire en sorte de ne répliquer que le delta (différence) entre la table p_assets du serveur A et B ?
Merci beaucoup de votre aide.

#7 Re : Réplication » replication logique master slave synchrone blocage » 01/06/2020 10:46:18

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.

#8 Réplication » Problème de droit » 29/05/2020 11:55:26

agi.v
Réponses : 1

Bonjour à tous !
En tout premier lei je tiens a remercier Guillaume (@gleu) pour son aide dans la réplication logique de données.
Là je me confronte à un souci (très surement le dernier). Un problème de droit. J'ai une configuration master slave. D'après les logs le slave tente bien de se synchroniser avec la master.
Le souci c'est que le role que j'ai créé n'a pas les droits pour copier la table selon les logs.
J'ai effectué quelques grant mais cela n'a pas l'air de faire grand chose.

2020-05-29 09:48:22.725 UTC [20765] replicator@employees ERROR:  permission denied for relation employees

Avez vous une indication qui pourra m'aider ? Je précise que je suis débutant mais je suis là pour apprendre wink
Merci de votre aide

#9 Re : Réplication » replication logique master slave synchrone blocage » 29/05/2020 08:28:53

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.

#10 Re : Réplication » replication logique master slave synchrone blocage » 28/05/2020 17:04:37

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

#11 Re : Réplication » replication logique master slave synchrone blocage » 28/05/2020 17:01:57

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

#12 Re : Réplication » replication logique master slave synchrone blocage » 28/05/2020 16:05:52

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.

#13 Re : Réplication » replication logique master slave synchrone blocage » 28/05/2020 14:39:02

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

#14 Re : Réplication » replication logique master slave synchrone blocage » 28/05/2020 14:15:55

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

#15 Re : Réplication » replication logique master slave synchrone blocage » 28/05/2020 14:00:24

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

#16 Re : Réplication » replication logique master slave synchrone blocage » 28/05/2020 13:45:05

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

#17 Réplication » replication logique master slave synchrone blocage » 28/05/2020 10:30:57

agi.v
Réponses : 14

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

Pied de page des forums

Propulsé par FluxBB