Add --synchronous option to pg_receivexlog, for more reliable WAL writing

Enterprise / PostgreSQL - Fujii Masao [postgresql.org] - 17 November 2014 11:32 UTC

Previously pg_receivexlog flushed WAL data only when WAL file was switched. Then 3dad73e added -F option to pg_receivexlog so that users could control how frequently sync commands were issued to WAL files. It also allowed users to make pg_receivexlog flush WAL data immediately after writing by specifying 0 in -F option. However feedback messages were not sent back immediately even after a flush location was updated. So even if WAL data was flushed in real time, the server could not see that for a while.

This commit removes -F option from and adds --synchronous to pg_receivexlog. If --synchronous is specified, like the standby's wal receiver, pg_receivexlog flushes WAL data as soon as there is WAL data which has not been flushed yet. Then it sends back the feedback message identifying the latest flush location to the server. This option is useful to make pg_receivexlog behave as sync standby by using replication slot, for example.

Original patch by Furuya Osamu, heavily rewritten by me. Reviewed by Heikki Linnakangas, Alvaro Herrera and Sawada Masahiko.

c4f99d2 Add --synchronous option to pg_receivexlog, for more reliable WAL writing.
doc/src/sgml/ref/pg_receivexlog.sgml | 42 ++++++++++++-----------
src/bin/pg_basebackup/pg_basebackup.c | 2 +-
src/bin/pg_basebackup/pg_receivexlog.c | 23 +++++--------
src/bin/pg_basebackup/receivelog.c | 57 ++++++++++++--------------------
src/bin/pg_basebackup/receivelog.h | 2 +-
5 files changed, 54 insertions(+), 72 deletions(-)

Upstream: git.postgresql.org


  • Share