Point-in-time recovery в PostgreSQL строится на непрерывном архиве WAL-сегментов — без него pg_basebackup даёт снимок на момент бэкапа, и всё, что случилось после, потеряно безвозвратно.
Минимум в postgresql.conf:
wal_level = replica
archive_mode = on
archive_command = 'test ! -f /archive/%f && cp %p /archive/%f'
%p — путь к сегменту, %f — имя файла. test ! -f не даёт молча перезаписать уже сохранённый сегмент.
С PostgreSQL 12 recovery_target_time и restore_command идут прямо в postgresql.conf, режим восстановления включает файл recovery.signal в PGDATA — отдельного recovery.conf больше нет. restore_command — обратный путь: читает сегменты из архива в pg_wal.
#postgresql #backup #dba
