In PostgreSQL, ensuring data integrity and ease of recovery during maintenance
or deployment activities is crucial. One effective way to safeguard your
database is by using the pg_create_restore_point
function. This function
creates a named, durable restore point which can be used to recover the
database to a specific state using Point-in-Time Recovery (PITR). Here's a
brief introduction on how to utilize pg_create_restore_point
before performing
maintenance or deploying changes.
Create
Create a restore point named RP1
:
SELECT pg_create_restore_point('RP1');
Get the Log Sequence Number (LSN) and the current timestamp, and save them as a reference:
SELECT pg_current_wal_lsn(), current_timestamp;
After doing this, you can restore that that point RP1
by following next steps:
Stop
For restoring, first stop postgres:
systemctl stop postgresql.service
Restore
pgbackrest restore --stanza=stanza_name --type=name --target=RP1
recovery_target_name
Check the $PGDATA/postgres.auto.conf
restore_command = 'pgbackrest --stanza=stanza_name archive-get %f "%p"'
recovery_target_name = 'RP1'
Start
Start postgresql and check the data:
systemctl start postgresql.service
promote
After the recovery and if data is at the desired point:
SELECT pg_promote();