Re: Suggest two small improvements for PITR.

From: Yura Sokolov <y(dot)sokolov(at)postgrespro(dot)ru>
To: pgsql-hackers(at)lists(dot)postgresql(dot)org
Subject: Re: Suggest two small improvements for PITR.
Date: 2024-06-18 14:31:15
Message-ID: 9c3a5503-6e9b-44a2-a064-c7b0e274e095@postgrespro.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

11.01.2024 19:58, Yura Sokolov пишет:
> Good day, hackers.
>
> Here I am to suggest two small improvements to Point In Time Recovery.
>
> First is ability to recover recovery-target-time with timestamp stored
> in XLOG_RESTORE_POINT. Looks like historically this ability did exist
> and were removed unintentionally during refactoring at commit [1]
> c945af80 "Refactor checking whether we've reached the recovery target."
>
> Second is extending XLOG_BACKUP_END record with timestamp, therefore
> backup will have its own timestamp as well. It is backward compatible
> change since there were no record length check before.
>
> Both changes slightly helps in mostly idle systems, when between several
> backups may happens no commits at all, so there's no timestamp to
> recover to.
>
> Attached sample patches are made in reverse order:
> - XLOG_BACKUP_END then XLOG_RESTORE_POINT.
> Second patch made by colleague by my idea.
> Publishing for both is permitted.
>
> If idea is accepted, patches for tests will be applied as well.
>
> [1]
> https://git.postgresql.org/gitweb/?p=postgresql.git;a=patch;h=c945af80

Good day.

Here're reordered and rebased patches with tests.
Now first patch is for XLOG_RETORE_POINT, and second one adds timestamp
to XLOG_BACKUP_END.

Btw, there's other thread by Simon Riggs with additions to
getRecordTimestamp:

https://www.postgresql.org/message-id/flat/CANbhV-F%2B8%3DY%3DcfurfD2hjoWVUvTk-Ot9BJdw2Myc%3Dst3TsZy9g%40mail.gmail.com

I didn't rush to adsorb it, because I'm not recoveryTargetUseOriginTime.
Though reaction on XLOG_END_OF_RECOVERY's timestamp is easily could be
copied from.

I believe, to react on XLOG_CHECKPOINT_ONLINE/XLOG_CHECKPOINT_SHUTDOWN
the CheckPoint.time field should be changed from `pg_time_t` to
`TimestampTz` type, since otherwise it interfere hard with
"inclusive"-ness of recovery_target_time.

-----

regards,
Yura

Attachment Content-Type Size
v2-0001-Restore-ability-to-react-on-timestamp-in-XLOG_RES.patch text/x-patch 4.4 KB
v2-0002-Add-timestamp-to-XLOG_BACKUP_END.patch text/x-patch 6.6 KB

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Andres Freund 2024-06-18 14:31:16 Re: CompilerWarnings task does not catch C++ warnings
Previous Message Maxim Orlov 2024-06-18 14:29:13 Re: Maybe don't process multi xmax in FreezeMultiXactId() if it is already marked as invalid?