pgBackRest delta restore ile standby'ı hızlıca yeniden kur
PostgreSQLYedekleme & PITRKomut
sudo systemctl stop postgresql-16
# Mevcut PGDATA'yı koruyup yalnızca farklı dosyaları getirir; standby.signal yazar:
sudo -u postgres pgbackrest --stanza=<stanza> --delta --type=standby "--recovery-option=primary_conninfo=host=<primary_host> port=5432 user=replicator application_name=<standby_name>" restore
sudo systemctl start postgresql-16
psql -X -c "SELECT status, sender_host FROM pg_stat_wal_receiver;"Ne yapar?
--delta mevcut PGDATA'daki dosyaları yedekle karşılaştırıp (boyut/zaman damgası ve checksum) yalnızca farklı olanları kopyalar; --type=standby standby.signal yazar, recovery-option ile primary_conninfo eklenir. Standby önce arşivden yetişir, sonra streaming'e geçer.
Ne zaman kullanılır?
Geride kalmış, timeline'ı ayrışmış veya pg_rewind'in başarısız olduğu bir standby'ı/eski primary'yi tam kopya almadan yeniden replica yapmak için.
Dikkat
Delta, hedef dizindeki farklı veya fazla dosyaları yedektekiyle değiştirir/siler; yanlış sunucuda çalıştırmak o sunucunun verisini yok eder. pgBackRest çalışan bir PostgreSQL'e restore etmez, ancak servisin gerçekten durduğunu kendin de doğrula. Parola primary_conninfo yerine .pgpass'te tutulmalı.
İ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 ile belirli bir zamana geri dön (PITR, --type=time)