diff options
author | Amit Kapila | 2025-01-22 05:24:53 +0000 |
---|---|---|
committer | Amit Kapila | 2025-01-22 05:24:53 +0000 |
commit | 4a0e7314f11ee03adfe9df945598c068b4179314 (patch) | |
tree | 2b7f67bc30af5163ff177cc949bb71e822e00c95 | |
parent | be31ac25191b26a8a1db345a727545959654f4cb (diff) |
Doc: Update the interaction of tablesync with wal_retrieve_retry_interval.
In passing, update the documentation that explains the process of initial
data replication to explicitly state that it uses a table synchronization
worker.
Author: Vignesh C
Reviewed-by: Peter Smith, Shlok Kyal, Amit Kapila
Discussion: https://postgr.es/m/CALDaNm3RxGcD4cDAV5Q0_A4n06F3+AAMpxiyND9Zn0dB86hFmg@mail.gmail.com
-rw-r--r-- | doc/src/sgml/config.sgml | 3 | ||||
-rw-r--r-- | doc/src/sgml/logical-replication.sgml | 35 |
2 files changed, 25 insertions, 13 deletions
diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index a8866292d46..a782f109982 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -4953,7 +4953,8 @@ ANY <replaceable class="parameter">num_sync</replaceable> ( <replaceable class=" </para> <para> In logical replication, this parameter also limits how often a failing - replication apply worker will be respawned. + replication apply worker or table synchronization worker will be + respawned. </para> </listitem> </varlistentry> diff --git a/doc/src/sgml/logical-replication.sgml b/doc/src/sgml/logical-replication.sgml index 7cc5f4b18d6..ab683cf111e 100644 --- a/doc/src/sgml/logical-replication.sgml +++ b/doc/src/sgml/logical-replication.sgml @@ -2017,18 +2017,20 @@ CONTEXT: processing remote data for replication origin "pg_16395" during "INSER <title>Initial Snapshot</title> <para> The initial data in existing subscribed tables are snapshotted and - copied in a parallel instance of a special kind of apply process. - This process will create its own replication slot and copy the existing - data. As soon as the copy is finished the table contents will become - visible to other backends. Once existing data is copied, the worker - enters synchronization mode, which ensures that the table is brought - up to a synchronized state with the main apply process by streaming - any changes that happened during the initial data copy using standard - logical replication. During this synchronization phase, the changes - are applied and committed in the same order as they happened on the - publisher. Once synchronization is done, control of the - replication of the table is given back to the main apply process where - replication continues as normal. + copied in a parallel instances of a special kind of apply process. + These special apply processes are dedicated table synchronization + workers, spawned for each table to be synchronized. Each table + synchronization process will create its own replication slot and + copy the existing data. As soon as the copy is finished the table + contents will become visible to other backends. Once existing data + is copied, the worker enters synchronization mode, which ensures + that the table is brought up to a synchronized state with the main + apply process by streaming any changes that happened during the + initial data copy using standard logical replication. During this + synchronization phase, the changes are applied and committed in the same + order as they happened on the publisher. Once synchronization is done, + control of the replication of the table is given back to the main apply + process where replication continues as normal. </para> <note> <para> @@ -2039,6 +2041,15 @@ CONTEXT: processing remote data for replication origin "pg_16395" during "INSER when copying the existing table data. </para> </note> + <note> + <para> + If a table synchronization worker fails during copy, the apply worker + detects the failure and respawns the table synchronization worker to + continue the synchronization process. This behaviour ensures that + transient errors do not permanently disrupt the replication setup. See + also <link linkend="guc-wal-retrieve-retry-interval"><varname>wal_retrieve_retry_interval</varname></link>. + </para> + </note> </sect2> </sect1> |