From: | Paul Smith <paul(at)pscs(dot)co(dot)uk> |
---|---|
To: | pgsql-admin(at)lists(dot)postgresql(dot)org |
Subject: | Re: Sequence last value is different among primary and secondary |
Date: | 2022-11-15 08:48:09 |
Message-ID: | d864578b-b72f-2ab5-d1c8-d11703d91adc@pscs.co.uk |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-admin |
On 15/11/2022 08:24, Kenny Bachman wrote:
> Hello Team,
>
> I got a weird situation about the sequence value in PG 14.5 (rhel
> 8.6). The sequence's last value is different between primary and
> secondary nodes.
>
> This sequence output belongs to the PRIMARY node:
>
> SELECT * FROM "ACCOUNT_ITEM_SEQ" ;
> last_value | log_cnt | is_called
> ------------+---------+-----------
> 105485 | 31 | t
>
> This output belongs to the SECONDARY node:
>
> SELECT * FROM "ACCOUNT_ITEM_SEQ" ;
> last_value | log_cnt | is_called
> ------------+---------+-----------
> 105516 | 0 | t
>
> *There is no replication gap or lag between the nodes.*
> What is the reason behind this difference?
I believe this is to do with the way PostgreSQL does sequences. It
doesn't update the WAL every time a sequence increments, just every 32
times to avoid writing lots of unnecessary entries given that the
sequence generally updates in a predictable manner. The 'log_cnt' keeps
track of how many increments are to go before the next WAL update.
I guess the secondary is just updated with the next 'step', so that if
there's a failover, the sequence number is at a 'safe' position without
causing duplicates. (note that the primary 'last_value + log_cnt' =
secondary 'last_value')
Eg, see
https://stackoverflow.com/questions/66456952/what-does-log-cnt-mean-in-the-postgres-sequence
Paul
--
Paul Smith Computer Services
Tel: 01484 855800
Vat No: GB 685 6987 53
Sign up for news & updates at http://www.pscs.co.uk/go/subscribe
From | Date | Subject | |
---|---|---|---|
Next Message | Kenny Bachman | 2022-11-15 13:28:37 | Re: Sequence last value is different among primary and secondary |
Previous Message | Kenny Bachman | 2022-11-15 08:24:51 | Sequence last value is different among primary and secondary |