PostgreSQL 9.1 Akış Çoğaltma, WAL arşivlemesi olmadan bir gecikmeden sonra yakalanıyor mu?


16

Bağlam:

Diyelim ki, Postgres 9.1 kümesinde Akış Çoğaltma / Etkin Bekleme kullanılırken, bir bekleme düğümü azalır. Bir gün boyunca kalır, bu süre boyunca master üzerinde çok fazla DML oluşur. Beklemenin recovery.conf dosyası 'restore_command' girdisi içermez (WAL günlük dosyalarından geri yüklemek için), ancak 'birincil_conninfo' dizesi içerir (Akış Çoğaltması için).

Soru:

Master üzerindeki bir günlük değişiklikten sonra bekleme modunu tekrar başlatırsam. Sadece Akış Çoğaltmasını kullanarak "yakalayacak" (sonunda ustayı yansıtan bir duruma gelecek)? Yoksa para birimi sağlamak için WAL dosya arşivlemeyi etkinleştirmem ve kesinti sırasında arşivlenen dosyaları uygulamasına izin vermeli miyim?

Burada WAL arşivleme / akış çoğaltma belgesini kontrol ettim ve hem WAL arşivlemesini hem de Akış Çoğaltmasını etkinleştirmeniz gerekmediğini söylüyor, ancak WAL dosya arşivlemesi etkinleştirilmeden yakalamanın gerçekleşip gerçekleşmeyeceği belli değil.

Teşekkürler!

Yanıtlar:


9

Evet, bu, sadece akış kullanarak yakalayacak if (ve ancak) , beklemeye son güncellemeden bu yana üretilen WAL segment sayısı postgresql.conf wal_keep_segments değerinden daha azdır. Bu, belgelerin bu bölümünde ele alınmıştır: Çoğaltma


2
Bu cevap doğrudur, ancak sorunu vurgular. Eğer wal_keep_segments iletirseniz, çoğaltma öldü. Ana bilgisayar ile uzun bir bağlantı kesilmesinden kurtulmak ve yeniden yakalamak için bir sistem istiyorsanız, dosya tabanlı çoğaltma ayarlamak isteğe bağlı değildir.
Greg Smith

0

bekleme düğümünde, recovery.conf dosyasında restore_command öğesini ayarlayabilir ve daha sonra pg_xlog (bekleme konumunda eksik olan) master dosyalarını restore_command noktalarını içeren klasöre kopyalayabilirsiniz. Başlangıç ​​düğümünü başlatarak ve yazarak hangi xlog dosyalarının eksik olduğunu kolayca bulabilirsiniz.

ps aux | grep postgres

orada "000000020000005200000025 bekliyor" ya da bunun gibi bir şey göreceksiniz, bu size hangi pg_xlog'u master'dan bekleme modunun restore_komut yoluna kopyalamaya başlamanız gerektiğini söyler.

wal_archiving özelliğini etkinleştirirseniz, ayarladığınız andan itibaren arşiv başlar.


Dosya tabanlı WAL arşivleme ve bekleme WAL dosyalarını yüklemek için bir restore_command vererek kullanarak, ben onu yakalamak emin olabilirsiniz. Benim sorum bu değil; Yalnızca akış çoğaltması (WAL dosyası gönderimi yok, yalnızca 'birincil_conninfo' da belirtildiği gibi çoğaltma akışı) kullanırsanız bekleme durumunu yakalayıp yakalamayacağını bilmek istiyorum .
Zac B

Hayır. postgres bunu yapmaz. çoğaltmada bir gecikme varsa günlük dosyalarını kopyalamanız gerekir.
sftsz

0

Hayır, akış çoğaltmasının bir örneğini oluşturdum ve bir şekilde senkronizasyondan düştüm rsync, WAL arşivlerinin bir kılavuzunu yapana kadar tekrar çalıştıramadım .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.