diff options
author | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2013-01-17 20:23:00 +0200 |
---|---|---|
committer | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2013-01-17 20:23:00 +0200 |
commit | 0b6329130e8e4576e97ff763f0e773347e1a88af (patch) | |
tree | 7902ba1fa99ac8124232122ce16231cff0b0e21e /doc/src | |
parent | 8ae35e91807508872cabd3b0e8db35fc78e194ac (diff) | |
download | postgresql-0b6329130e8e4576e97ff763f0e773347e1a88af.tar.gz postgresql-0b6329130e8e4576e97ff763f0e773347e1a88af.zip |
Make pg_receivexlog and pg_basebackup -X stream work across timeline switches.
This mirrors the changes done earlier to the server in standby mode. When
receivelog reaches the end of a timeline, as reported by the server, it
fetches the timeline history file of the next timeline, and restarts
streaming from the new timeline by issuing a new START_STREAMING command.
When pg_receivexlog crosses a timeline, it leaves the .partial suffix on the
last segment on the old timeline. This helps you to tell apart a partial
segment left in the directory because of a timeline switch, and a completed
segment. If you just follow a single server, it won't make a difference, but
it can be significant in more complicated scenarios where new WAL is still
generated on the old timeline.
This includes two small changes to the streaming replication protocol:
First, when you reach the end of timeline while streaming, the server now
sends the TLI of the next timeline in the server's history to the client.
pg_receivexlog uses that as the next timeline, so that it doesn't need to
parse the timeline history file like a standby server does. Second, when
BASE_BACKUP command sends the begin and end WAL positions, it now also sends
the timeline IDs corresponding the positions.
Diffstat (limited to 'doc/src')
-rw-r--r-- | doc/src/sgml/protocol.sgml | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/doc/src/sgml/protocol.sgml b/doc/src/sgml/protocol.sgml index e14627c201e..baae59de6e9 100644 --- a/doc/src/sgml/protocol.sgml +++ b/doc/src/sgml/protocol.sgml @@ -1418,8 +1418,10 @@ The commands accepted in walsender mode are: <para> After streaming all the WAL on a timeline that is not the latest one, the server will end streaming by exiting the COPY mode. When the client - acknowledges this by also exiting COPY mode, the server responds with a - CommandComplete message, and is ready to accept a new command. + acknowledges this by also exiting COPY mode, the server sends a + single-row, single-column result set indicating the next timeline in + this server's history. That is followed by a CommandComplete message, + and the server is ready to accept a new command. </para> <para> @@ -1784,7 +1786,9 @@ The commands accepted in walsender mode are: </para> <para> The first ordinary result set contains the starting position of the - backup, given in XLogRecPtr format as a single column in a single row. + backup, in a single row with two columns. The first column contains + the start position given in XLogRecPtr format, and the second column + contains the corresponding timeline ID. </para> <para> The second ordinary result set has one row for each tablespace. @@ -1827,7 +1831,9 @@ The commands accepted in walsender mode are: <quote>ustar interchange format</> specified in the POSIX 1003.1-2008 standard) dump of the tablespace contents, except that the two trailing blocks of zeroes specified in the standard are omitted. - After the tar data is complete, a final ordinary result set will be sent. + After the tar data is complete, a final ordinary result set will be sent, + containing the WAL end position of the backup, in the same format as + the start position. </para> <para> |