Re: Using failover slots for PG-non_PG logical replication - Mailing list pgsql-hackers

From Amit Kapila
Subject Re: Using failover slots for PG-non_PG logical replication
Date
Msg-id CAA4eK1+zKoyrqUOv1+aRrChHyh1Az59suVBOeSin_tE=euwJCA@mail.gmail.com
Whole thread Raw
In response to Re: Using failover slots for PG-non_PG logical replication  (shveta malik <shveta.malik@gmail.com>)
Responses Re: Using failover slots for PG-non_PG logical replication
List pgsql-hackers
On Wed, Jul 2, 2025 at 5:50 PM Ashutosh Bapat
<ashutosh.bapat.oss@gmail.com> wrote:
>
> On Wed, Jul 2, 2025 at 12:36 PM shveta malik <shveta.malik@gmail.com> wrote:
> >
> > On Wed, Jul 2, 2025 at 10:50 AM Ashutosh Bapat
> > <ashutosh.bapat.oss@gmail.com> wrote:
> > >
> > > Hi All,
> > >
> > > The failover slots documentation [1] is good for PG - PG logical
> > > replication, but the first two queries require pg_subscription which
> > > may not be present in non-PG downstream. Somebody looking to setup
> > > failover slots for non-PG subscriber may not find the page useful.
> >
> > Okay.  It appears to me that the entire document at [1] is
> > specifically intended for a built-in replication setup, and the
> > corresponding page was written with that context in mind.
> >
> > > However, the third query, when modified to mention the replication
> > > slots relevant to the downstream is useful to them. How to find the
> > > replication slots to be synchronized is a problem specific to the type
> > > of downstream. Such a setup should add those slots to
> > > sync_replication_slots. I think the chapter should mention that the
> > > 3rd query should also include the slots mentioned in
> > > sync_replication_slots for PG-non_PG logical replication setup.
> > >
> >
> > sync_replication_slots is a boolean which enables a physical standby
> > to synchronize logical failover slots. Did you mean something else?
>
> I confused this with the actual list of slots to be synchronized.
> Sorry for that. The slots to be synchronized can be obtained from the
> primary by querying pg_replication_slots with failover = true.
>

Note that primary may have slots corresponding to multiple subscriber
nodes, so querying all slots on primary will give a correct answer may
depend on the use case. For example, say a user wants to do some sort
of load balancing such that some of the subscriber/downstream nodes
are served by a standby, then directly querying all slots from
pg_replication_slots from the primary won't give the correct answer.
In a typical failover case as well, if slots corresponding to a
particular downstream are ready, then that should be sufficient to
continue replication from the standby. Then, also, there is a case
when the primary node is down, then such a query won't work; it can
only work when there is a planned switchover. Considering all these
points, I am not sure if it is a good idea to mention querying the
primary for all slots marked with failover=true. However, I agree that
we should mention something for non-native logical replication
solutions, something on the lines of what Shveta is proposing. OTOH,
if you or Shveta have some clear guidelines for how a downstream can
find the required slots which can work in all or most cases, then it
is okay to mention that as well.

--
With Regards,
Amit Kapila.



pgsql-hackers by date:

Previous
From: Masahiko Sawada
Date:
Subject: Re: Improve tab completion for COPY
Next
From: Dilip Kumar
Date:
Subject: Re: Conflict detection for update_deleted in logical replication