On Wed, Dec 23, 2020 at 12:26 PM Craig Ringer
<craig.rin...@enterprisedb.com> wrote:
>
> Hi all
>
> I want to share an idea I've looked at a few times where I've run into 
> situations where logical slots were inadvertently dropped, or where it became 
> necessary to decode changes in the past on a slot.
>
> As most of you will know you can't just create a logical slot in the past. 
> Even if it was permitted, it'd be unsafe due to catalog_xmin retention 
> requirements and missing WAL.
>
> But if we can arrange a physical replica to replay the WAL of interest and 
> decode each commit as soon as it's replayed by the startup process, we know 
> the needed catalog rows must all exist, so it's safe to decode the change.
>
> So it should be feasible to run logical decoding in standby, even without a 
> replication slot, so long as we:
>
> * pause startup process after each xl_xact_commit
> * wake the walsender running logical decoding
> * decode and process until ReorderBufferCommit for the just-committed xact 
> returns
> * wake the startup process to decode the up to the next commit
>

How will you deal with subscriber restart?  I think you need some way
to remember confirmed_flush_lsn and restart_lsn and then need to teach
WAL machinery to restart from some previous point.

-- 
With Regards,
Amit Kapila.


Reply via email to