On Wed, Jun 5, 2024 at 7:52 AM Zhijie Hou (Fujitsu) <houzj.f...@fujitsu.com> wrote: > > Attach the V4 doc patch which addressed Peter and Bertrand's comments. >
Few comments: 1. + On the subscriber node, use the following SQL to identify + which slots should be synced to the standby that we plan to promote. +<programlisting> +test_sub=# SELECT + array_agg(slot_name) AS slots + FROM + (( + SELECT r.srsubid AS subid, CONCAT('pg_', srsubid, '_sync_', srrelid, '_', ctl.system_identifier) AS slot_name + FROM pg_control_system() ctl, pg_subscription_rel r, pg_subscription s + WHERE r.srsubstate = 'f' AND s.oid = r.srsubid AND s.subfailover + ) UNION ( + SELECT s.oid AS subid, s.subslotname as slot_name + FROM pg_subscription s + WHERE s.subfailover + )); + slots +------- + {sub1,sub2,sub3} This should additionally say what exactly this SQL is doing to fetch the required slots. 2. If <varname>standby_slot_names</varname> is + not configured correctly, it is highly recommended to run this step after + the primary server is down, otherwise the results of the query can vary + due to the ongoing replication on the logical subscribers from the primary + server. + </para> + <substeps> + <step performance="required"> + <para> + On the subscriber node, check the last replayed WAL. + This step needs to be run on any database that includes failover enabled + subscriptions. +<programlisting> +test_sub=# SELECT + MAX(remote_lsn) AS remote_lsn_on_subscriber + FROM If the 'standby_slot_names' is not configured then we can't ensure that standby is always ahead because what if immediately after running this query the additional WAL got synced to the subscriber before standby? Now, as you mentioned users can first shutdown primary to ensure that no additional WAL is sent to the subscriber. After that, it is possible that one can use these complex queries to ensure that the subscriber is behind the standby but it is better to encourage users to use standby_slot_names to ensure the same. If at all we get such use cases and or requirements then we can add such additional steps after understanding the user's requirements. For now, we should remove these additional steps. -- With Regards, Amit Kapila.