Re: find replication slots that "belong" to a publication

From: Willy-Bas Loos <willybas(at)gmail(dot)com>
To: Justin <zzzzz(dot)graf(at)gmail(dot)com>
Cc: pgsql-general <pgsql-general(at)lists(dot)postgresql(dot)org>
Subject: Re: find replication slots that "belong" to a publication
Date: 2025-04-07 10:16:13
Message-ID: CAHnozThHzgK1KAMpxPV3r_oonFUEqfXxU3rQ7SDTEAvZRi3t_Q@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Hi Justin, thanks for your anwer!
My question is not so much about "can i drop a certain replication slot",
more about "does this publication still have any replication slots?". Or,
if you will: "what's the publication for this replication slot?".

I've double checked the views that you suggested, and I found that I can
relate the WAL sender processes to replication slots through
pg_replication_slots.active_pid .
I've also looked into replication origins.

But I can't find a link to the publication. And that's what I need to know.

Cheers,
Willy-Bas

On Sun, Apr 6, 2025 at 3:36 PM Justin <zzzzz(dot)graf(at)gmail(dot)com> wrote:

> On Fri, Apr 4, 2025 at 4:58 AM Willy-Bas Loos <willybas(at)gmail(dot)com> wrote:
>
>> Hi!
>>
>> I'm looking for a way to find out if there are still replication slots
>> active for a publication before dropping the publication in an automated
>> way. The idea is that the publication is thought not to be needed any
>> longer, but we want to make sure.
>>
>> I'm having trouble finding a link between a publication, the
>> subscriptions and the replication slots. Especially when you don't want to
>> make assumptions about any subscriber nodes, so you are restricted to the
>> publisher node.
>>
>> The best I could find was a query listed in pg_stat_activity that lists
>> the slot name and the publication name:
>> START_REPLICATION SLOT "my_slot" LOGICAL 5DD1/3E56D360 (proto_version
>> '1', publication_names '"my_publication"')
>>
>> I don't like the idea of using string manipulation on such query strings
>> to get the information I need. Postgres must have a way to compose this
>> query.
>> Can anyone tell me a way to find replication slots that belong to a
>> publication?
>>
>> --
>> Willy-Bas Loos
>>
>
> Hi Willy-Bas,
>
> Logical replication slots appear in the views pg_stat_replication and
> pg_replication_slots. Both views have the information you are looking for,
> the difference is pg_stat_replication shows only the active slots. Keep in
> mind Temporary Slots only live for the length of the session that created
> it; the slot will appear in both views.
>
> The bigger issue I think you are trying to address is when can a slot be
> dropped safely. Once a logical replication slot is dropped there is no
> recovery of the slot's lsn position. Probably the best way to decide if a
> slot has been abandoned is how far behind it is. The pg_wal_lsn_diff can
> be used to figure out how far behind a slot is
>
> https://www.postgresql.org/docs/13/view-pg-replication-slots.html
>
> https://www.postgresql.org/docs/13/monitoring-stats.html#MONITORING-PG-STAT-REPLICATION-VIEW
>
>
> https://www.postgresql.org/docs/current/functions-admin.html#FUNCTIONS-ADMIN-BACKUP
>
> Hope this answers your question
>
>
> Justin
>

--
Willy-Bas Loos

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Costa Alexoglou 2025-04-07 12:44:58 Performance regression when adding LIMIT 1 to a query
Previous Message KK CHN 2025-04-07 09:34:26 PgBackRest fails due to filesystem full