Обсуждение: Missing docs: setting up replication slots for standbys
Section 46.2.2 has this: Note: PostgreSQL also has streaming replication slots (see Section 25.2.5), but they are used somewhat differently there. Section 25.2.5 has this: You can avoid this by setting wal_keep_segments to a value large enough to ensure that WAL segments are not recycled too early, or by configuring a replication slot for the standby. ... however, absolutely nowhere is it explained how to configure a replication slot for a streaming replica. Is it, in fact, possible to do so? -- Josh Berkus PostgreSQL Experts Inc. http://pgexperts.com
On 09/03/2014 10:43 PM, Josh Berkus wrote: > > Section 46.2.2 has this: > > Note: PostgreSQL also has streaming replication slots (see Section > 25.2.5), but they are used somewhat differently there. > > Section 25.2.5 has this: > > You can avoid this by setting wal_keep_segments to a value large enough > to ensure that WAL segments are not recycled too early, or by > configuring a replication slot for the standby. > > ... however, absolutely nowhere is it explained how to configure a > replication slot for a streaming replica. Is it, in fact, possible to > do so? Searching ... it is possible. However, the way to do so is actually scattered among 5 different doc pages. I'm not sure that I'm up for the surgery required to make this make sense to users ... anybody else have the energy/time? The relevant pages in the docs are these: http://www.postgresql.org/docs/9.4/static/standby-settings.html http://www.postgresql.org/docs/9.4/static/functions-admin.html#FUNCTIONS-REPLICATION http://www.postgresql.org/docs/9.4/static/logicaldecoding-explanation.html#AEN66111 http://www.postgresql.org/docs/9.4/static/warm-standby.html#STREAMING-REPLICATION ... otherwise, I'll just write a blog or postgresguide or something. -- Josh Berkus PostgreSQL Experts Inc. http://pgexperts.com
On 2014-09-03 22:43:19 -0700, Josh Berkus wrote:
>
> Section 46.2.2 has this:
>
> Note: PostgreSQL also has streaming replication slots (see Section
> 25.2.5), but they are used somewhat differently there.
>
> Section 25.2.5 has this:
>
> You can avoid this by setting wal_keep_segments to a value large enough
> to ensure that WAL segments are not recycled too early, or by
> configuring a replication slot for the standby.
>
> ... however, absolutely nowhere is it explained how to configure a
> replication slot for a streaming replica. Is it, in fact, possible to
> do so?
It actually is explained. I don't have a built source handy right now,
so chapter numbers... But at least the following is there:
<sect3 id="streaming-replication-slots-config">
<title>Configuration Example</title>
<para>
You can create a replication slot like this:
<programlisting>
postgres=# SELECT * FROM pg_create_physical_replication_slot('node_a_slot');
slot_name | xlog_position
-------------+---------------
node_a_slot |
postgres=# SELECT * FROM pg_replication_slots;
slot_name | slot_type | datoid | database | active | xmin | restart_lsn
-------------+-----------+--------+----------+--------+------+-------------
node_a_slot | physical | | | f | |
(1 row)
</programlisting>
To configure the standby to use this slot, <varname>primary_slot_name</>
should be configured in the standby's <filename>recovery.conf</>.
Here is a simple example:
<programlisting>
standby_mode = 'on'
primary_conninfo = 'host=192.168.1.50 port=5432 user=foo password=foopass'
primary_slot_name = 'node_a_slot'
</programlisting>
and I'm pretty sure primary_slot_name and such is configured at the
appropriate place too.
That's not to say it can't be be expanded and/or better linked...
Greetings,
Andres Freund
--
Andres Freund http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services
On 09/03/2014 11:03 PM, Andres Freund wrote:
> It actually is explained. I don't have a built source handy right now,
> so chapter numbers... But at least the following is there:
>
> <sect3 id="streaming-replication-slots-config">
> <title>Configuration Example</title>
> <para>
> You can create a replication slot like this:
> <programlisting>
> postgres=# SELECT * FROM pg_create_physical_replication_slot('node_a_slot');
> slot_name | xlog_position
> -------------+---------------
> node_a_slot |
>
> postgres=# SELECT * FROM pg_replication_slots;
> slot_name | slot_type | datoid | database | active | xmin | restart_lsn
> -------------+-----------+--------+----------+--------+------+-------------
> node_a_slot | physical | | | f | |
> (1 row)
> </programlisting>
> To configure the standby to use this slot, <varname>primary_slot_name</>
> should be configured in the standby's <filename>recovery.conf</>.
> Here is a simple example:
> <programlisting>
> standby_mode = 'on'
> primary_conninfo = 'host=192.168.1.50 port=5432 user=foo password=foopass'
> primary_slot_name = 'node_a_slot'
> </programlisting>
>
> and I'm pretty sure primary_slot_name and such is configured at the
> appropriate place too.
Huh. I can't seem to find any way to navigate to that page. What is it
supposed to be under?
--
Josh Berkus
PostgreSQL Experts Inc.
http://pgexperts.com
On Thu, Sep 4, 2014 at 3:06 PM, Josh Berkus <josh@agliodbs.com> wrote: > On 09/03/2014 11:03 PM, Andres Freund wrote: >> and I'm pretty sure primary_slot_name and such is configured at the >> appropriate place too. > > Huh. I can't seem to find any way to navigate to that page. What is it > supposed to be under? Category seems adapted: Chapter 25. High Availability, Load Balancing, and Replication 25.2. Log-Shipping Standby Servers -- Michael