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 » réplication logique ne démarre pas » 24/11/2025 19:39:12

je cloture mon message . En fait il y avait un permissoin denied au debut du COPY des tables . je suppose que dans ce cas le slot temporaire de synchro reste vivant et attend la correction et que le process de replication passe aà la table suivante en créant un nouveau slot ...  J'ai mis le bon user à qui appartient les tabes sur le cible  et çà focntionne

#2 Réplication » réplication logique ne démarre pas » 24/11/2025 17:11:53

debellabre
Réponses : 1

Bonjour,
J'ai une réplication logique entre une base postgresql en version 11.22 sur os ubuntu 22.04 LTS  et une base abonnée  en pg17.7 sur Goggle Cloud Platform . J'ai 333 tables à répliquer mais aucune ne se réplique car  le max_replication_slot qui est sétté  à 10 sur le publieur n'est pas assez haut . le max_sync_workers_per_subscription sur l'abonné est pourtant à 2 (Sur GCP on ne peut pas baisser à moins de 2) .
Voici l'état des slots de replication sur le publieur
[local]:6095 postgres@scapnor=# select slot_name,active FROM pg_replication_slots;
                slot_name                 | active
------------------------------------------+--------
repmgr_slot_2                            | t
rebuild_infoprod_scapnor_20250602_1117   | t
gcp_scapnorbi                            | t
pg_161210_sync_17519_7571794086042918928 | f
pg_161210_sync_17525_7571794086042918928 | f
pg_161210_sync_17568_7571794086042918928 | f
pg_161210_sync_17580_7571794086042918928 | f
pg_161210_sync_17586_7571794086042918928 | f
pg_161210_sync_17639_7571794086042918928 | f
pg_161210_sync_17645_7571794086042918928 | f
(10 lignes)


il y a 3  slots qui sont actifs (standby + un infocentre + la souscription vers GCP initiale)   + 7 slots de synchro inactifs 

Voici la commande de creation de souscription
CREATE SUBSCRIPTION gcp_scapnorbi  CONNECTION 'host=10.72.0.115 port=60000  user=datastream  password=********* dbname=scapnor' publication scapnor_gcp_bigquery;


Quand je regarde les logs GCP la souscription essaye de lancer 329 tables différentes (started ) sur les 333 comme si le paramètre max_sync_workers_per_subscription  n'etait pas pris en compte alors qu'il est à 2 sur GCP  . Aucun statut 'finished' dans les logs GCP, aucune table n'est répliquée et le process de réplication tourne à l'infini avec ces messages started depuis l'abonné et le message 'increase max_replication_slot' depusi le publieur . Si je detruit les slots inactif il en regénère d'autres dans la foulée qui sont inactifs.

Sur l'abonné.
scapnorbi=> show max_sync_workers_per_subscription ;
max_sync_workers_per_subscription
-----------------------------------
2
(1 row)

Si je change de publieur avec la même version pg je n'ai pas ce problème .

A part agrandir le max_replication slots (et de combien ?) que puis-je faire pour que la réplication démarre ?
merci

#3 Re : Général » Pg_dump en erreur (Version 11.12 sur redhat 7.4 / Vmware 6.5) » 06/07/2021 09:07:25

Merci beaucoup pour vos réponses .  La fonction global_search est impeccable . J'ai repéré les objets en trop puis les ai delet" . Le pg_dump fonctionne. Je pense que ce pgénomène arrive quand il ay des locks  exclusif sur des drop cascade du schéma et qu'une personne kill le backend du drop au milieu. Comme cest du DDL j'imagine qu'il n'y a pas de rollback et que le drop cascade est commencé mais pas fini.
Voici le procédure de Daniel que j'ai déroulée :
select * from global_search('6072711', '{}','{pg_catalog}');
schemaname |   tablename    |   columnname    | rowctid
------------+----------------+-----------------+----------
pg_catalog | pg_depend      | refobjid        | (99,29)
pg_catalog | pg_depend      | refobjid        | (99,32)
pg_catalog | pg_depend      | refobjid        | (101,19)
pg_catalog | pg_depend      | refobjid        | (101,21)
pg_catalog | pg_depend      | refobjid        | (99,29)
pg_catalog | pg_depend      | refobjid        | (99,32)
pg_catalog | pg_depend      | refobjid        | (101,19)
pg_catalog | pg_depend      | refobjid        | (101,21)
pg_catalog | pg_default_acl | defaclnamespace | (0,50)
pg_catalog | pg_default_acl | defaclnamespace | (0,54)
pg_catalog | pg_default_acl | defaclnamespace | (0,73)
pg_catalog | pg_default_acl | defaclnamespace | (0,75)
pg_catalog | pg_default_acl | defaclnamespace | (0,50)
pg_catalog | pg_default_acl | defaclnamespace | (0,54)
pg_catalog | pg_default_acl | defaclnamespace | (0,73)
pg_catalog | pg_default_acl | defaclnamespace | (0,75)
(16 lignes)


select * from pg_default_acl where defaclnamespace=6072711;
defaclrole | defaclnamespace | defaclobjtype |                                  defaclacl
------------+-----------------+---------------+------------------------------------------------------------------------------
      16532 |         6072711 | r             | {reader=r/fac_cff,delta=arwdDx/fac_cff}
         10 |         6072711 | r             | {ref_rco=r/postgres,alice_ro=r/postgres,ref_jde=r/postgres,delta=r/postgres}
         10 |         6072711 | f             | {ref_jde=X/postgres}
         10 |         6072711 | S             | {ref_rco=r/postgres,alice_ro=r/postgres,ref_jde=r/postgres,delta=r/postgres}
(4 lignes)

[local]:5432 postgres@tst=# delete from pg_default_acl where defaclnamespace=6072711;
DELETE 4

[local]:5432 postgres@tst=# select * from pg_depend where refobjid=6072711;
classid |  objid  | objsubid | refclassid | refobjid | refobjsubid | deptype
---------+---------+----------+------------+----------+-------------+---------
     826 | 6114238 |        0 |       2615 |  6072711 |           0 | a
     826 | 6114246 |        0 |       2615 |  6072711 |           0 | a
     826 | 6114242 |        0 |       2615 |  6072711 |           0 | a
     826 | 6114247 |        0 |       2615 |  6072711 |           0 | a
(4 lignes)

delete from pg_depend where refobjid=6072711;
DELETE 4

Le pg_dump a fontionné ausi avant le 2ème delete

#4 Général » Pg_dump en erreur (Version 11.12 sur redhat 7.4 / Vmware 6.5) » 05/07/2021 14:00:32

debellabre
Réponses : 4

Bonjour

Un pg_dump ne se lance pas: pg_dump
pg_dump: le schéma d'OID 6072711 n'existe pas

A priori un schéma qui n'existe pas. J'ai eu plusieurs fois(3)  cette erreur sur d'autres vm à la suite de multiples déploiements automatisés qui drop puis rec-cre des schémas avec ses tables.

Je n'ai pourtant pas de schéma manquant . C'est comme si des objets avaient été mal nettoyés lors du précédent drop.

Y a t-il une technique pour débugger le pg_dump et voir où est l'erreur pour repérer d'éventuels objets non detruits du schéma ?

Où il y a t-il une vue qui permettrait de repérer des traces de cet OID ?

La lecture des tables du dictionnaire n'a rien donnée
select * from pg_type where typnamespace=6072711;
select * from pg_class where relnamespace=6072711;
select * from pg_aggregate where aggfnoid = 6072711 or aggtransfn  = 6072711 or aggfinalfn = 6072711;
select * from pg_proc where pronamespace = 6072711;
select * from pg_opclass where opcnamespace = 6072711;
select * from pg_conversion where connamespace = 6072711;
select * from pg_operator where oprnamespace = 6072711;

Merci

#5 Général » replication logique en cas de bascule sur un standby » 28/06/2019 17:09:44

debellabre
Réponses : 0

Bonjour,
j'ai une instance master (master1)  qui replique physiquement (en streaming replication) sur un slave  . J'ai aussi un autre master (master 2) qui replique logiquement (en streaming replication) ses tables du schema (schema1)  sur le 1er master (master 1).
En cas d'arrêt du master1  je (ou automatiquement avec PAF ou repmgr) promote le slave en master3 .
J'aimerai switcher la replication logique du master2 vers le master3 sans avoir à truncater les tables du schema1 du master 3 (car les données sont à jour du fait de la réplication physique) et refaire la descente des données .

Ect-ce possible de dupliquer ou modifier le slot de replication du master2 pour le faire pointer sur le master3 et n'avoir aucune données à redescendre et reprendre le flux de replication logique ?


Environnement :  version postgresql 11. 2 sur une vm en  redhat 7.4

Merci

#6 Général » héritage sous postgres » 15/05/2019 16:30:09

debellabre
Réponses : 2

Bonjour,

Nous aimerions utiliser la fonctionnalité d'héritage pour une RDO mais celle-ci semble inexploitable.

En effet On ne peut pas utiliser des contraintes d'intégrité sur la table parente  si l'enregistrement a été crée sur une base fille  de ce parent.

Un sujet à priori connu depuis longtemps.
http://geekblog.over-blog.com/article-17775481.html

Y a t-il un moyen de contournement ? Ce sujet est-il abandonné ou dans la roadmap de postgres ?
Merci

Pied de page des forums

Propulsé par FluxBB