On Thu, Nov 25, 2021 at 5:13 PM Marcos Pegoraro <mar...@f10.com.br> wrote:
>
> A publication for all tables was running fine, Master is a PostgreSQL 11.11. 
> Replica was running version 13 (don“t remember minor version).
>
> Then we tried to update only subscriber server, nothing was done on master 
> side.
>
> Then we did ...
> - installed postgresql-14.
> - configured postgresql.conf to be similar to previous.
> - on version 13 disabled subscription - alter subscription disable.
> - changed both port to run pg_upgrade.
> - stop services for both 13 e 14.
> - /usr/lib/postgresql/14/bin/pg_upgrade -b /usr/lib/postgresql/13/bin -B 
> /usr/lib/postgresql/14/bin -d /etc/postgresql/13/main/ -D 
> /etc/postgresql/14/main/ -j 2 --link -p 9999 -P 9998 -U postgres -v
> - when finished upgrade process, we removed version 13 and ran vacuumdb -p 
> 9998 -U postgres --all --analyze-in-stages
> - last step was to enable that subscription.
> - just wait for the subscriber to get the data changed, pg_upgrade ran for 15 
> minutes, this should be synced in a few seconds ...
> - few seconds later we remembered that some other tables were created on 
> publication server, so we did a refresh publication.
>
> Then, some minutes later we got lots of log entries "duplicate key value 
> violates unique constraint pk..." because it was trying to COPY that table 
> from master.
>
> We disable subscription again until we solve, as remains.
>
> Selecting from pg_subscription_rel all old tables are with srsubstate i for 
> initialize, not s for synchronized or r for ready, as they should. And all 
> srsublsn of these records were null, so it lost synchronization coordination 
> for all tables which existed before this upgrade process.
>

The reason is after an upgrade, there won't be any data in
pg_subscription_rel, and only when you tried to refresh it is trying
to sync again which leads to the "duplicate key value ..." problem you
are seeing.

> So, my first question is, as our publication server continues running, lots 
> of updates were processed, so how can I synchronize both sides without 
> recreating that publication ?
>

Don't you want to eventually upgrade the publisher node as well? You
can refer to blog [1] for the detailed steps.

> And my second question is, is this problem documented ? Is this problem 
> expected to happen ?
>

Yes, the way you are doing I think it is bound to happen. There is
some discussion about why this is happening in email [2]. AFAIK, it is
not documented and if so, I think it will be a good idea to document
it.

[1] - https://elephanttamer.net/?p=58
[2] - 
https://www.postgresql.org/message-id/CALDaNm2-SRGHK0rqJQu7rGiS4hDAb7Nib5HbojEN5ubaXGs2CA%40mail.gmail.com

-- 
With Regards,
Amit Kapila.


Reply via email to