public inbox for [email protected]
help / color / mirror / Atom feedFrom: Alexander Uvizhev <[email protected]>
To: Zhijie Hou (Fujitsu) <[email protected]>
Cc: [email protected] <[email protected]>
Subject: Re: Starting logical replication at arbitrary point that's available in WAL
Date: Fri, 27 Dec 2024 13:18:27 +0000
Message-ID: <[email protected]> (raw)
In-Reply-To: <OS0PR01MB5716587A22BEBE121E988AC6940E2@OS0PR01MB5716.jpnprd01.prod.outlook.com>
References: <[email protected]>
<OS0PR01MB5716587A22BEBE121E988AC6940E2@OS0PR01MB5716.jpnprd01.prod.outlook.com>
On 12/27/24 13:20, Zhijie Hou (Fujitsu) wrote:
> On Friday, December 27, 2024 7:39 PM Alexander Uvizhev<[email protected]> wrote:
>
> Hi,
>
>> I'm doing a logical replication using streaming replication protocol and
>> I'm trying to start a stream from a certain arbitrary point that's
>> available in WAL. However, both CREATE_REPLICATION_SLOT and
>> pg_create_logical_replication_slot() create slot with nearly last LSN/XID.
>>
>> Is it possible to create a replication slot with arbitrary LSN/XID values?
> I think it's not supported to specify arbitrary LSN/XID values for a newly
> created slot in core. However, if you have an existing slot with an older LSN/XID, you
> can copy it using pg_copy_logical_replication_slot, and then advance the copied
> slot to your desired position with pg_replication_slot_advance.
Thanks for the idea, I've already discovered it and it requires me to
implement some script to advance that dedicated slot, which I was hoping
to avoid.
>> Also pg_create_logical_replication_slot() for some reason gives
>> different result than CREATE_REPLICATION_SLOT: new slot's `catalog_xmin`
>> is set to the smallest `catalog_xmin` among already existing slots.
>> Looks like a bug.
> Could you provide a script to reproduce this issue ?
> That would be helpful in diagnosing the reason.
Unfortunately, I have no such script. But it looks like this:
test=> select slot_name, catalog_xmin, restart_lsn, confirmed_flush_lsn
from pg_replication_slots;
slot_name | catalog_xmin | restart_lsn | confirmed_flush_lsn
---------------+--------------+-------------+---------------------
inactive_slot | 10073 | 0/1101DB88 | 0/1101DB88
active_slot | 42607 | 0/17A87410 | 0/17A87410
physical | | 0/17A875A0 |
test=> select pg_create_logical_replication_slot('test_slot',
'decoderbufs');
slot_name | catalog_xmin | restart_lsn | confirmed_flush_lsn
---------------+--------------+-------------+---------------------
inactive_slot| 10073 | 0/1101DB88 | 0/1101DB88
active_slot | 42607 | 0/17A87410 | 0/17A87410
physical | | 0/17A875D8 |
test_slot | 10073 | 0/17A875A0 | 0/17A875D8
While using CREATE_REPLICATION_SLOT would give me the same slot with
`catalog_xmin` = 42607.
Hope this helps.
> Best Regards,
> Hou zj
--
AU
view thread (3+ messages)
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: [email protected]
Cc: [email protected], [email protected], [email protected]
Subject: Re: Starting logical replication at arbitrary point that's available in WAL
In-Reply-To: <[email protected]>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox