Greetings,
* PG Doc comments form (noreply@postgresql.org) wrote:
> It would be good to point out on the pg_basebackup documentation that it
> behaves differently from
>
> SELECT * FROM pg_start_backup('label', true, false);
> cp -a xxx yyy
> SELECT * FROM pg_stop_backup(false, true);
... that's not actually a backup. Doing the above, you won't get a
backup_label and unless you take other steps, PG will end up thinking
it's doing crash recovery. That's not good and can lead to corruption.
If you're going to consider taking a low-level backup you should read
the documentation here:
https://www.postgresql.org/docs/15/continuous-archiving.html#BACKUP-LOWLEVEL-BASE-BACKUP
Which specifically goes into the question about replication slots.
> method. One thing discovered was that the latter retains replication slot
> information on the clone while pg_basebackup discards all replication slot
> information. Not sure if it is a feature or a bug (replication slots
> retention is a good thing).
Our documentation points out a number of reasons why it's not, I'd
suggest you read the above.
> And perhaps there are more such subtle differences?
Not sure that there's really that many other differences between
pg_basebackup and a properly implemented low-level backup. You
certainly have to do a lot more than what you have above to have a
properly implemented low-level backup though.
Thanks,
Stephen