Обсуждение: Specifying WAL Location in Streaming Replication

Поиск
Список
Период
Сортировка

Specifying WAL Location in Streaming Replication

От
Matt Dee
Дата:
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

Re: Specifying WAL Location in Streaming Replication

От
Michael Paquier
Дата:
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

Вложения