4 votes

Impossible de supprimer d'une table après le passage de la réplication logique à la réplication en continu

Sur mon serveur DEV, j'ai testé la réplication logique, et le retour au streaming après cela.

Maintenant wal_level = replica et j'ai deux esclaves :

pid  |state     |application_name    |client_addr|write_lag      |flush_lag      |replay_lag     |sync_priority|sync_state|
-----|----------|--------------------|-----------|---------------|---------------|---------------|-------------|----------|
12811|streaming |db-slave1           |*.*.*.*    |00:00:00.000569|00:00:00.001914|00:00:00.001932|            0|async     |
25978|streaming |db-slave2           |*.*.*.*    |00:00:00.000568|00:00:00.001913|00:00:00.001931|            0|async     |

Maintenant, je crée une nouvelle table et j'insère un enregistrement. Par exemple :

create table test_delete (
    id int
);

insert into test_delete values (1);

delete from test_delete where id = 1;

La table a été créée et répliquée sur les deux esclaves, mais la requête de suppression a échoué avec une erreur :

Erreur SQL [55000] : ERREUR : Impossible de supprimer de la table "test_delete" car elle n'a pas d'identité de réplique et publie des suppressions. Astuce : Pour permettre la suppression à partir de la table, définissez REPLICA IDENTITY en utilisant ALTER TABLE.

J'ai donc besoin d'aide pour rétablir l'état avant le passage à la réplication logique et la possibilité de supprimer des tables.

3voto

Slava Rozhnev Points 66

Après quelques recherches, j'ai trouvé la solution. Malgré le fait que wal_level a changé dans postgres.conf toutes les tables apparaissent toujours dans pg_publication_tables . Donc, pour vérifier le statut de publication utilisé :

select * from pg_publication_tables;

et pour supprimer les enregistrements :

drop publication <publication_name>;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X