Specifying WAL Location in Streaming Replication
Hi,
I am trying to use the streaming replication protocol described in
https://www.postgresql.org/docs/10/static/protocol-replication.html to read
logical decoding events from a replication slot.
I'm doing this by starting replication with START_REPLICATION, and sending
down the most recent position consumed in a standby status update. When
starting replication, I want to begin reading from the last position
"committed" by the standby status update.
In the documentation for START_REPLICATION, a required argument is the WAL
location to begin streaming at, and I'm not sure what to use here. I have
been using 0, and it seems to work fine. Additionally, it seems that when
--startpos is not provided to pg_recvlogical, it defaults to just sending a
wal location of 0.
While this seems to work, I feel a bit uneasy about it since I can't find
any documentation explaining why this works or what this argument does when
using a replication slot. Any clarification would be appreciated.
Thanks,
-Matt
On Sun, Jul 08, 2018 at 09:51:47AM -0400, Matt Dee wrote:
In the documentation for START_REPLICATION, a required argument is the WAL
location to begin streaming at, and I'm not sure what to use here. I have
been using 0, and it seems to work fine. Additionally, it seems that when
--startpos is not provided to pg_recvlogical, it defaults to just sending a
wal location of 0.While this seems to work, I feel a bit uneasy about it since I can't find
any documentation explaining why this works or what this argument does when
using a replication slot. Any clarification would be appreciated.
0/0 can be used in the case where the client does not know which
position it should try to use, in which case the server will choose by
itself from the oldest LSN position where changes have been left
unconsumed. If you have an idea of documentation improvement, I think
that it would be welcome, say in the replication protocol page for the
command START_REPLICATION. This level of details is really internal,
but fresh ideas may bring more clarity in this area, and nowhere in the
docs are used references to either 0/0 or InvalidXLogRecPtr for WAL
positions.
--
Michael