Re: restarting logical replication after upgrading standby

From: Vijaykumar Jain <vijaykumarjain(dot)github(at)gmail(dot)com>
To: Axel Rau <Axel(dot)Rau(at)chaos1(dot)de>
Cc: Pgsql-admin <pgsql-admin(at)lists(dot)postgresql(dot)org>
Subject: Re: restarting logical replication after upgrading standby
Date: 2022-02-06 19:40:50
Message-ID: CAM+6J97gLW6uuomRTL6e6+UOSevOsQHUvSJeL+HtofRm5ekL=A@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-admin

On Mon, 7 Feb 2022 at 00:33, Vijaykumar Jain <
vijaykumarjain(dot)github(at)gmail(dot)com> wrote:

>
>
> *# so finally, i truncate the table and re-sync :( and everything works,
> but i think i am missing something here. i am pretty sure we *
> *# can play with pg_replication_origin_advance
> or pg_replication_slot_advance to move the lsn to continue subscription
> without a sync, i'll have to spend some time to understand that*
> *# but for now, in summary, subscription breaks in upgrade. After an
> upgrade, we need to enable it back and possibly refresh publication
> (re-sync) from scratch.*
> *# but i am hoping i can be corrected by more experienced people here.*
>
>

I am sorry, I have messed up the mail flow. i'll probably use gist for code
dump or use an attachment in the future, and then stick to inlining.

now,
ok I just tried it again with *copy_data = false*, i was able to get the
changes *after* refresh was done, but I lost the changes before i
re-enabled subscription and refresh publication.

postgres=# table pg_stat_subscription;
-[ RECORD 1 ]---------+------
subid | 16403
subname | mysub
pid |
relid |
received_lsn |
last_msg_send_time |
last_msg_receipt_time |
latest_end_lsn |
latest_end_time |

postgres=# table pg_subscription;
-[ RECORD 1 ]---+----------
oid | 16403
subdbid | 16401
subname | mysub
subowner | 10
*subenabled | f*
subbinary | f
substream | f
subconninfo | port=8001
subslotname | mysub
subsynccommit | off
subpublications | {mypub}

postgres=# table pg_subscription_rel;
(0 rows)

postgres=# alter subscription mysub refresh publication with ( copy_data =
false );
ERROR: ALTER SUBSCRIPTION ... REFRESH is not allowed for disabled
subscriptions
postgres=# alter subscription mysub enable;
ALTER SUBSCRIPTION
postgres=# table pg_stat_subscription;
-[ RECORD 1 ]---------+---------------------------------
subid | 16403
subname | mysub
pid | 3007
relid |
received_lsn | 0/15E35F0
last_msg_send_time | 2022-02-07 00:53:09.760154+05:30
last_msg_receipt_time | 2022-02-07 00:53:09.760176+05:30
latest_end_lsn | 0/15E35F0
latest_end_time | 2022-02-07 00:53:09.760154+05:30

postgres=# table pg_subscription;
-[ RECORD 1 ]---+----------
oid | 16403
subdbid | 16401
subname | mysub
subowner | 10
*subenabled | t*
subbinary | f
substream | f
subconninfo | port=8001
subslotname | mysub
subsynccommit | off
subpublications | {mypub}

postgres=# table pg_subscription_rel;
(0 rows)

*postgres=# alter subscription mysub refresh publication with ( copy_data =
false );*
ALTER SUBSCRIPTION
postgres=# table pg_subscription_rel;
-[ RECORD 1 ]-----
srsubid | 16403
srrelid | 16384
*srsubstate | r*
srsublsn |

*# i inserted '3' at the publisher instance, but it did not get reflected
here.*
postgres=# table t;
-[ RECORD 1 ]
id | 1
-[ RECORD 2 ]
id | 2

*# but when i insert a new row '4' at publisher i could get the changes
just fine, but still not '3'..*
*# so i am doing something wrong or not using the origin advance function
correctly, somewhere, but i hope this gives you some idea on how to check*

postgres=# table t;
-[ RECORD 1 ]
id | 1
-[ RECORD 2 ]
id | 2
-[ RECORD 3 ]
id | 4

at publisher
postgres=# table t;
-[ RECORD 1 ]
id | 1
-[ RECORD 2 ]
id | 2
*-[ RECORD 3 ]*
*id | 3 -- this is missing*
-[ RECORD 4 ]
id | 4

btw,
you can look at the inplace major version upgrade. although this is on the
top of patroni, but just in case.
spilo/postgres-appliance/major_upgrade at master · zalando/spilo
(github.com)
<https://github.com/zalando/spilo/tree/master/postgres-appliance/major_upgrade>
and
https://github.com/chobostar/ansible-playbook-upgrade-pg *(mostly for the
references)*

> --
> Thanks,
> Vijay
> LinkedIn - Vijaykumar Jain <https://www.linkedin.com/in/vijaykumarjain/>
>

--
Thanks,
Vijay
LinkedIn - Vijaykumar Jain <https://www.linkedin.com/in/vijaykumarjain/>

In response to

Browse pgsql-admin by date

  From Date Subject
Next Message Goti 2022-02-07 03:35:32 Re: Does aurora PostgreSQL use wal_buffers?
Previous Message Vijaykumar Jain 2022-02-06 19:03:04 Re: restarting logical replication after upgrading standby