pg_start_backup
dezso notları gibi bir kontrol noktası gerçekleştirecektir. Bunun bir etkisi vardır, ancak veritabanınız yine de kontrol noktalarını oldukça düzenli bir şekilde gerçekleştirir ve işlevini yerine getirmesi gerekir, bu yüzden sizin için bir sorun oluşturmazlar. Erken bir kontrol noktası, daha az verinin toplandığı anlamına gelir, yani bir kontrol noktasından gelen herhangi bir şey pg_start_backup
normalden daha düşük etkili olacaktır.
Endişelenmeniz gereken yer rsync veya eşdeğer bir pg_basebackup
adımdır. Bu okuma I / O sıralı olduğu için çok kötü olmayacak, ancak yine de veritabanınızın I / O performansını önemli ölçüde incitecek ve aynı zamanda sıcak verileri RAM önbelleğinden daha az lehine itme eğiliminde olacak - daha fazla ihtiyaç duyulan veriler tekrar okunduğunda önbellek bozulmasına neden olur.
Sen kullanabilirsiniz nice
ve ionice
yardım sınırına G / Ç darbe (ancak önbellek etkisi); ancak bunun bir maliyeti vardır. Yedekleme daha uzun sürecektir ve yedeklemeyi tamamlayıp pg_stop_backup
sisteminizi çalıştırmadan önce - anladığım kadarıyla - WAL biriktiremez, silemez, yedekleme çalışmasının sonunda BÜYÜK bir kontrol noktası için kontrol noktası borcu biriktirir ve tablo ve dizin biriktirir çünkü ölü satırları temizleyemez. Bu nedenle, özellikle çok yüksek churn tablolarınız varsa yedeklemenin sonsuza kadar sürmesini göze alamazsınız.
Sonunda, güvenli bir şekilde kullanıp kullanamayacağınızı pg_start_backup
ve pg_stop_backup
ortamınızdaki etkin yedekler için söylemek zor . Çoğu insan yapabilir, ancak donanımınızın yapabileceklerinin kenarına yakınsanız, sıkı zamanlama gereksinimlerine sahipseniz, durma riskini karşılayamazsanız ve çok yüksek churn tablolarının yanı sıra çok büyük tablolara sahipseniz, sorun yaratabilir .
Ne yazık ki, hemen hemen test etmeniz ve görmeniz gerekiyor.
Yapabiliyorsanız, CHECKPOINT
LVM, SAN'ınızın araçları, EBS veya ne varsa onu kullanmak yerine veritabanınızın bulunduğu birimin atomik anlık görüntüsünü almaya değer olabilir . Bunu yapabiliyorsanız, anlık görüntüyü boş zamanlarınızda kopyalayabilirsiniz. Bu yaklaşım, PITR / sıcak bekleme / sıcak bekleme için bir temel yedekleme almak için uygun değildir, ancak statik bir yedek kopya için mükemmel bir şekilde iyidir ve sistem üzerinde çok daha düşük bir etkiye sahiptir. Bunu ancak anlık görüntüleriniz atomsa ve WAL dahil tüm veritabanınız tek bir birimdeyse yapabilirsiniz.
Henüz araştırmadığım bir olasılık iki yaklaşımı birleştirmek. Bana muhtemelen ( denenmemiş ve muhtemelen yanlış ve güvensiz , henüz bilmiyorum) olabilir:
pg_start_backup
- Tüm tablo alanlarının, ana veri dizininin ve xlog biriminin anlık görüntülerini tetikleyin
pg_stop_backup
- WAL'ı son arşive kadar
pg_stop_backup
- Anlık görüntü birimlerinden veri kopyalama
Temel olarak, fikir, boş zamanlarınızda kopyalayabileceğiniz her birimin belirli bir zaman noktasını alarak DB'nin kontrol noktalarını ne kadar geciktireceğini azaltmaktır.