Re: pg_basebackup, walreceiver and wal_sender_timeout

From: Michael Paquier <michael(at)paquier(dot)xyz>
To: Magnus Hagander <magnus(at)hagander(dot)net>
Cc: Nick B <nbedxp(at)gmail(dot)com>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: pg_basebackup, walreceiver and wal_sender_timeout
Date: 2019-01-27 12:58:57
Message-ID: 20190127125857.GB4672@paquier.xyz
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Sat, Jan 26, 2019 at 01:45:46PM +0100, Magnus Hagander wrote:
> One workaround you could perhaps look at here is to run pg_basebackup
> with --no-sync. That way there will be no fsyncs issued while running. You
> will then of course have to take care of syncing all the files to disk
> after it's done, but a network filesystem might be happier in dealing with
> a large "batch-sync" like that rather than piece-by-piece sync.

Hm. Aren't we actually wrong in letting the WAL receive method use
the value of do_sync depending on the command line arguments, with
true being the default for pg_basebackup? In plain format, we flush
the full data directory anyway when the backup ends. In tar format,
each individual tar file is flushed one-by-one after being received,
and we issue a final sync on the parent directory at the end. So
what's missing is just to make sure that the fully generated
pg_wal.tar is synced once completed. This would be way cheaper than
letting the stream process issue syncs for each segments, which does
not matter much in the event of a host crash because the base backup
may finish in an inconsistent state, and one should not use it.
--
Michael

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Michael Paquier 2019-01-27 13:10:36 Re: backslash-dot quoting in COPY CSV
Previous Message Michael Paquier 2019-01-27 12:41:00 Re: pg_upgrade: Pass -j down to vacuumdb