Re: Suggest two small improvements for PITR. - Mailing list pgsql-hackers

From Yura Sokolov
Subject Re: Suggest two small improvements for PITR.
Date
Msg-id 9c3a5503-6e9b-44a2-a064-c7b0e274e095@postgrespro.ru
Whole thread Raw
In response to Suggest two small improvements for PITR.  (Yura Sokolov <y.sokolov@postgrespro.ru>)
List 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

pgsql-hackers by date:

Previous
From: Maxim Orlov
Date:
Subject: Re: Maybe don't process multi xmax in FreezeMultiXactId() if it is already marked as invalid?
Next
From: Andres Freund
Date:
Subject: Re: CompilerWarnings task does not catch C++ warnings