Re: Synchronizing slots from primary to standby

From: Peter Eisentraut <peter(dot)eisentraut(at)enterprisedb(dot)com>
To: Bruce Momjian <bruce(at)momjian(dot)us>, Ashutosh Sharma <ashu(dot)coek88(at)gmail(dot)com>
Cc: Andres Freund <andres(at)anarazel(dot)de>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Synchronizing slots from primary to standby
Date: 2022-02-11 14:26:03
Message-ID: ac40e8f8-46f5-7bb4-c08b-df3c9e6f1599@enterprisedb.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 10.02.22 22:47, Bruce Momjian wrote:
> On Tue, Feb 8, 2022 at 08:27:32PM +0530, Ashutosh Sharma wrote:
>>> Which means that if e.g. the standby_slot_names GUC differs from
>>> synchronize_slot_names on the physical replica, the slots synchronized on the
>>> physical replica are not going to be valid. Or if the primary drops its
>>> logical slots.
>>>
>>>
>>>> Should the redo function for the drop replication slot have the capability
>>>> to drop it on standby and its subscribers (if any) as well?
>>>
>>> Slots are not WAL logged (and shouldn't be).
>>>
>>> I think you pretty much need the recovery conflict handling infrastructure I
>>> referenced upthread, which recognized during replay if a record has a conflict
>>> with a slot on a standby. And then ontop of that you can build something like
>>> this patch.
>>>
>>
>> OK. Understood, thanks Andres.
>
> I would love to see this feature in PG 15. Can someone explain its
> current status? Thanks.

The way I understand it:

1. This feature (probably) depends on the "Minimal logical decoding on
standbys" patch. The details there aren't totally clear (to me). That
patch had some activity lately but I don't see it in a state that it's
nearing readiness.

2. I think the way this (my) patch is currently written needs some
refactoring about how we launch and manage workers. Right now, it's all
mangled together with logical replication, since that is a convenient
way to launch and manage workers, but it really doesn't need to be tied
to logical replication, since it can also be used for other logical slots.

3. It's an open question how to configure this. My patch show a very
minimal configuration that allows you to keep all logical slots always
behind one physical slot, which addresses one particular use case. In
general, you might have things like, one set of logical slots should
stay behind one physical slot, another set behind another physical slot,
another set should not care, etc. This could turn into something like
the synchronous replication feature, where it ends up with its own
configuration language.

Each of these are clearly significant jobs on their own.

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Yura Sokolov 2022-02-11 14:26:37 Re: Accommodate startup process in a separate ProcState array slot instead of in MaxBackends slots.
Previous Message Robert Haas 2022-02-11 13:55:23 Re: refactoring basebackup.c