aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/src/sgml/config.sgml66
-rw-r--r--doc/src/sgml/logical-replication.sgml86
2 files changed, 114 insertions, 38 deletions
diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml
index ff6fcd902a8..8e4145979dc 100644
--- a/doc/src/sgml/config.sgml
+++ b/doc/src/sgml/config.sgml
@@ -4156,7 +4156,13 @@ restore_command = 'copy "C:\\server\\archivedir\\%f" "%p"' # Windows
<para>
These settings control the behavior of the built-in
<firstterm>streaming replication</firstterm> feature (see
- <xref linkend="streaming-replication"/>). Servers will be either a
+ <xref linkend="streaming-replication"/>), and the built-in
+ <firstterm>logical replication</firstterm> feature (see
+ <xref linkend="logical-replication"/>).
+ </para>
+
+ <para>
+ For <emphasis>streaming replication</emphasis>, servers will be either a
primary or a standby server. Primaries can send data, while standbys
are always receivers of replicated data. When cascading replication
(see <xref linkend="cascading-replication"/>) is used, standby servers
@@ -4166,6 +4172,17 @@ restore_command = 'copy "C:\\server\\archivedir\\%f" "%p"' # Windows
across the cluster without problems if that is required.
</para>
+ <para>
+ For <emphasis>logical replication</emphasis>, <firstterm>publishers</firstterm>
+ (servers that do <link linkend="sql-createpublication"><command>CREATE PUBLICATION</command></link>)
+ replicate data to <firstterm>subscribers</firstterm>
+ (servers that do <link linkend="sql-createsubscription"><command>CREATE SUBSCRIPTION</command></link>).
+ Servers can also be publishers and subscribers at the same time. Note,
+ the following sections refer to publishers as "senders". For more details
+ about logical replication configuration settings refer to
+ <xref linkend="logical-replication-config"/>.
+ </para>
+
<sect2 id="runtime-config-replication-sender">
<title>Sending Servers</title>
@@ -4213,6 +4230,7 @@ restore_command = 'copy "C:\\server\\archivedir\\%f" "%p"' # Windows
<term><varname>max_replication_slots</varname> (<type>integer</type>)
<indexterm>
<primary><varname>max_replication_slots</varname> configuration parameter</primary>
+ <secondary>in a sending server</secondary>
</indexterm>
</term>
<listitem>
@@ -4229,14 +4247,8 @@ restore_command = 'copy "C:\\server\\archivedir\\%f" "%p"' # Windows
</para>
<para>
- On the subscriber side, specifies how many replication origins (see
- <xref linkend="replication-origins"/>) can be tracked simultaneously,
- effectively limiting how many logical replication subscriptions can
- be created on the server. Setting it to a lower value than the current
- number of tracked replication origins (reflected in
- <link linkend="view-pg-replication-origin-status">pg_replication_origin_status</link>,
- not <link linkend="catalog-pg-replication-origin">pg_replication_origin</link>)
- will prevent the server from starting.
+ Note that this parameter also applies on the subscriber side, but with
+ a different meaning.
</para>
</listitem>
</varlistentry>
@@ -4914,17 +4926,39 @@ ANY <replaceable class="parameter">num_sync</replaceable> ( <replaceable class="
<para>
These settings control the behavior of a logical replication subscriber.
Their values on the publisher are irrelevant.
- </para>
-
- <para>
- Note that <varname>wal_receiver_timeout</varname>,
- <varname>wal_receiver_status_interval</varname> and
- <varname>wal_retrieve_retry_interval</varname> configuration parameters
- affect the logical replication workers as well.
+ See <xref linkend="logical-replication-config"/> for more details.
</para>
<variablelist>
+ <varlistentry id="guc-max-replication-slots-subscriber" xreflabel="max_replication_slots">
+ <term><varname>max_replication_slots</varname> (<type>integer</type>)
+ <indexterm>
+ <primary><varname>max_replication_slots</varname> configuration parameter</primary>
+ <secondary>in a subscriber</secondary>
+ </indexterm>
+ </term>
+ <listitem>
+ <para>
+ Specifies how many replication origins (see
+ <xref linkend="replication-origins"/>) can be tracked simultaneously,
+ effectively limiting how many logical replication subscriptions can
+ be created on the server. Setting it to a lower value than the current
+ number of tracked replication origins (reflected in
+ <link linkend="view-pg-replication-origin-status">pg_replication_origin_status</link>)
+ will prevent the server from starting.
+ <literal>max_replication_slots</literal> must be set to at least the
+ number of subscriptions that will be added to the subscriber, plus some
+ reserve for table synchronization.
+ </para>
+
+ <para>
+ Note that this parameter also applies on a sending server, but with
+ a different meaning.
+ </para>
+ </listitem>
+ </varlistentry>
+
<varlistentry id="guc-max-logical-replication-workers" xreflabel="max_logical_replication_workers">
<term><varname>max_logical_replication_workers</varname> (<type>integer</type>)
<indexterm>
diff --git a/doc/src/sgml/logical-replication.sgml b/doc/src/sgml/logical-replication.sgml
index f8756389a3b..7fdf08b59d0 100644
--- a/doc/src/sgml/logical-replication.sgml
+++ b/doc/src/sgml/logical-replication.sgml
@@ -1765,31 +1765,73 @@ CONTEXT: processing remote data for replication origin "pg_16395" during "INSER
<title>Configuration Settings</title>
<para>
- Logical replication requires several configuration options to be set.
+ Logical replication requires several configuration options to be set. Most
+ options are relevant only on one side of the replication. However,
+ <varname>max_replication_slots</varname> is used on both the publisher and
+ the subscriber, but it has a different meaning for each.
</para>
- <para>
- On the publisher side, <varname>wal_level</varname> must be set to
- <literal>logical</literal>, and <varname>max_replication_slots</varname>
- must be set to at least the number of subscriptions expected to connect,
- plus some reserve for table synchronization. And
- <varname>max_wal_senders</varname> should be set to at least the same as
- <varname>max_replication_slots</varname> plus the number of physical
- replicas that are connected at the same time.
- </para>
+ <sect2 id="logical-replication-config-publisher">
+ <title>Publishers</title>
+
+ <para>
+ <link linkend="guc-wal-level"><varname>wal_level</varname></link> must be
+ set to <literal>logical</literal>.
+ </para>
+
+ <para>
+ <link linkend="guc-max-replication-slots"><varname>max_replication_slots</varname></link>
+ must be set to at least the number of subscriptions expected to connect,
+ plus some reserve for table synchronization.
+ </para>
+
+ <para>
+ <link linkend="guc-max-wal-senders"><varname>max_wal_senders</varname></link>
+ should be set to at least the same as
+ <varname>max_replication_slots</varname>, plus the number of physical
+ replicas that are connected at the same time.
+ </para>
+
+ </sect2>
+
+ <sect2 id="logical-replication-config-subscriber">
+ <title>Subscribers</title>
+
+ <para>
+ <link linkend="guc-max-replication-slots-subscriber"><varname>max_replication_slots</varname></link>
+ must be set to at least the number of subscriptions that will be added to
+ the subscriber, plus some reserve for table synchronization.
+ </para>
+
+ <para>
+ <link linkend="guc-max-logical-replication-workers"><varname>max_logical_replication_workers</varname></link>
+ must be set to at least the number of subscriptions (for apply workers), plus
+ some reserve for the table synchronization workers.
+ </para>
+
+ <para>
+ <link linkend="guc-max-worker-processes"><varname>max_worker_processes</varname></link>
+ may need to be adjusted to accommodate for replication workers, at least
+ (<link linkend="guc-max-logical-replication-workers"><varname>max_logical_replication_workers</varname></link>
+ + <literal>1</literal>). Note, some extensions and parallel queries also
+ take worker slots from <varname>max_worker_processes</varname>.
+ </para>
+
+ <para>
+ <link linkend="guc-max-sync-workers-per-subscription"><varname>max_sync_workers_per_subscription</varname></link>
+ controls the amount of parallelism of the initial data copy during the
+ subscription initialization or when new tables are added.
+ </para>
+
+ <para>
+ Logical replication workers are also affected by
+ <link linkend="guc-wal-receiver-timeout"><varname>wal_receiver_timeout</varname></link>,
+ <link linkend="guc-wal-receiver-status-interval"><varname>wal_receiver_status_interval</varname></link> and
+ <link linkend="guc-wal-retrieve-retry-interval"><varname>wal_receiver_retry_interval</varname></link>.
+ </para>
+
+ </sect2>
- <para>
- <varname>max_replication_slots</varname> must also be set on the subscriber.
- It should be set to at least the number of subscriptions that will be added
- to the subscriber, plus some reserve for table synchronization.
- <varname>max_logical_replication_workers</varname> must be set to at least
- the number of subscriptions, again plus some reserve for the table
- synchronization. Additionally the <varname>max_worker_processes</varname>
- may need to be adjusted to accommodate for replication workers, at least
- (<varname>max_logical_replication_workers</varname>
- + <literal>1</literal>). Note that some extensions and parallel queries
- also take worker slots from <varname>max_worker_processes</varname>.
- </para>
</sect1>
<sect1 id="logical-replication-quick-setup">