Re: Synchronizing slots from primary to standby
От | shveta malik |
---|---|
Тема | Re: Synchronizing slots from primary to standby |
Дата | |
Msg-id | CAJpy0uBAPiKWXauTMSj8NopzRQTtjyU=v+Lr5RoEs-T4vBg9Cg@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Synchronizing slots from primary to standby (shveta malik <shveta.malik@gmail.com>) |
Ответы |
Re: Synchronizing slots from primary to standby
RE: Synchronizing slots from primary to standby Re: Synchronizing slots from primary to standby Re: Synchronizing slots from primary to standby |
Список | pgsql-hackers |
On Tue, Nov 21, 2023 at 2:02 PM shveta malik <shveta.malik@gmail.com> wrote: > > On Tue, Nov 21, 2023 at 1:13 PM Drouvot, Bertrand > <bertranddrouvot.pg@gmail.com> wrote: > > > > Hi, > > > > On 11/21/23 6:16 AM, Amit Kapila wrote: > > > On Mon, Nov 20, 2023 at 6:51 PM Drouvot, Bertrand > > > <bertranddrouvot.pg@gmail.com> wrote: > > >> As far the 'i' state here, from what I see, it is currently useful for: > > >> > > >> 1. Cascading standby to not sync slots with state = 'i' from > > >> the first standby. > > >> 2. Easily report Slots that did not catch up on the primary yet. > > >> 3. Avoid inactive slots to block "active" ones creation. > > >> > > >> So not creating those slots should not be an issue for 1. (sync are > > >> not needed on cascading standby as not created on the first standby yet) > > >> but is an issue for 2. (unless we provide another way to keep track and report > > >> such slots) and 3. (as I think we should still need to reserve WAL). > > >> > > >> I've a question: we'd still need to reserve WAL for those slots, no? > > >> > > >> If that's the case and if we don't call ReplicationSlotCreate() then ReplicationSlotReserveWal() > > >> would not work as MyReplicationSlot would be NULL. > > >> > > > > > > Yes, we need to reserve WAL to see if we can sync the slot. We are > > > currently creating an RS_EPHEMERAL slot and if we don't explicitly > > > persist it when we can't sync, then it will be dropped when we do > > > ReplicationSlotRelease() at the end of synchronize_one_slot(). So, the > > > loss is probably, the next time we again try to sync the slot, we need > > > to again create it and may need to wait for newer restart_lsn on > > > standby > > > > Yeah, and doing so we'd reduce the time window to give the slot a chance > > to catch up (as opposed to create it a single time and maintain an 'i' state). > > > > > which could be avoided if we have the slot in 'i' state from > > > the previous run. > > > > Right. > > > > > I don't deny the importance of having 'i' > > > (initialized) state but was just trying to say that it has additional > > > code complexity. > > > > Right, and I think it's worth it. > > > > > OTOH, having it may give better visibility to even > > > users about slots that are not active (say manually created slots on > > > the primary). > > > > Agree. > > > > All that being said, on my side I'm +1 on keeping the 'i' state behavior > > as it is implemented currently (would be happy to hear others' opinions too). > > > > +1 for 'i' state. I feel it gives a better slot-sync functionality > (optimizing redo-effort for inactive slots, inactive not blocking > active ones) along with its usage for monitoring purposes. v37 fails to apply to HEAD due to a recent commit e83aa9f92fdd, rebased the patches. PFA v37_2 patches. thanks Shveta
Вложения
В списке pgsql-hackers по дате отправления: