DBAtlas · Veritabanı operasyon atlası

pgBackRest delta restore ile standby'ı hızlıca yeniden kur

PostgreSQLYedekleme & PITR

Komut

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ı.

DBAtlas'ta aç →

İlgili