Thread: 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