pgBackRest ile belirli bir zamana geri dön (PITR, --type=time)
PostgreSQLYedekleme & PITRKomut
sudo systemctl stop postgresql-16
sudo -u postgres pgbackrest --stanza=<stanza> --delta --type=time "--target=2026-10-08 14:30:00+03" --target-action=pause restore
sudo systemctl start postgresql-16
# Recovery hedefte durur (salt okunur); veriyi doğrula:
psql -X -c "SELECT pg_is_in_recovery(), pg_last_xact_replay_timestamp();"
# Doğruysa recovery'yi bitir ve yeni timeline ile yazılabilir aç:
psql -X -c "SELECT pg_wal_replay_resume();"Ne yapar?
Hedef zamandan önce biten bir yedeği geri yükler ve WAL'ı yalnızca hedef zamana kadar uygular; target-action=pause ile hedefte durup veriyi doğrulamana izin verir, pg_wal_replay_resume() ile promote olur.
Ne zaman kullanılır?
Yanlışlıkla yapılan DELETE/DROP/UPDATE gibi mantıksal hatalardan hemen önceki ana dönmek için.
Dikkat
Hedeften sonraki tüm değişiklikler bu kümede kaybolur; mümkünse PITR'ı ayrı bir sunucuya yapıp yalnızca etkilenen veriyi pg_dump ile geri taşı. Saat dilimini hedefte açıkça belirt. pgBackRest 2.24+ hedef zamandan önceki uygun yedeği kendisi seçer; daha eski sürümlerde --set ile hedeften önce biten yedeği belirt. Hedef yedeğin bitiş zamanından önceyse restore tutarlılığa ulaşamaz.
İlgili
- pgBackRest için WAL arşivlemeyi yapılandır (archive-push/archive-get)
- pgBackRest stanza oluştur ve arşivlemeyi doğrula (stanza-create/check)
- pgBackRest ile full, differential ve incremental yedek al
- pgBackRest yedek kataloğunu ve WAL arşiv aralığını gör (info)
- pgBackRest ile son yedekten tam restore yap
- pgBackRest delta restore ile standby'ı hızlıca yeniden kur