Replikasyon
Bu bölümde verilen ayarlar dahili streaming replikasyon özelliğinin davranışını kontrol eder. Sunucular, primary ya da standby bir sunucu olabilir. Primary sunucular veri gönderebilir, standby ise replike verilerin alıcılarıdır. Standby sunucular Cascading replikasyon kullanıldığında alıcının (receiver) yanı sıra gönderici (senders) de olabilir.
Sending Sunucular
Bu başlıkta verilen parametreler, replike verileri bir veya daha fazla standby sunucuya gönderen sunucuda ayarlanır. Primary, her durumda gönderen bir sunucu olduğundan dolayı bu parametreler her zaman primary üzerinde ayarlanmalıdır. Bu parametrelerin rolü ve anlamı bir standby primary olduktan sonra değişmez.
max_wal_senders
wal_level
paremetresi replica
veya daha yüksek seviyede ayarlanmalıdır.Bir standby sunucuda bu parametreyi primary sunucudakiyle aynı veya daha yüksek bir değere ayarlamalısınız. Aksi takdirde standby sunucusunda sorgulara izin verilmeyecektir.
max_replication_slots
wal_level
paremetresi replica
veya daha yüksek seviyede ayarlanmalıdır wal_keep_size
pg_wal
dizininde tutulan geçmiş log dosyası segmentlerinin minimum miktarını belirtir. Standby sunucu bunları streaming replikasyon için kullanır. Standby, sending sunucunundan wal_keep_size
megabayttan daha fazla geride kalırsa, sending sunucu standby’ın ihtiyacı olan bir WAL segmentini silebilir. Bu durumda replikasyon bağlantısı sonlandırılır. (WAL arşivleme aktifse, standby sunucu segmentleri arşivden alarak kurtarabilir.)Bu parametre yalnızca
pg_wal
‘da tutulan minimum segment boyutunu ayarlar. Sistemin WAL arşivleme veya bir checkpoint’ten kurtarmak için daha fazla segment tutması gerekebilir. wal_keep_size
0 ise (varsayılan), sistem standby amaçları için fazladan segment tutmaz. Bu değer birimsiz belirtilirse megabayt olarak alınır. Bu parametre yalnızca postgresql.conf dosyasından ve sunucu komut satırından ayarlanabilir. max_slot_wal_keep_size
pg_wal
dizininde tutmasına izin verilen maksimum WAL dosyası boyutunu belirtir.max_slot_wal_keep_size = -1
ayarında (varsayılan), replikasyon slotları sınırsız miktarda WAL dosyası tutabilir. Bir replikasyon slotunun restart_lsn
değeri geçerli LSN’nin verilen boyuttan daha fazla gerisinde kalırsa slotu kullanan standby gerekli WAL dosyalarının silinmesinden dolayı replikasyona devam edemez. Replikasyon slotlarının WAL kullanabilirliğini pg_replication_slots
ile görebilirsiniz. wal_sender_timeout
Birden çok coğrafi konuma dağıtılmış bir kümede, her bir konum için farklı değerler kullanmak küme yönetiminde esneklik sağlar. Daha küçük bir değer, düşük gecikmeli ağ bağlantısına sahip bir standby’da hızlı arıza tespiti için kullanışlıdır. Daha büyük bir değer, yüksek gecikmeli ağ bağlantısıyla uzak bir konumda bulunan standby’ın sağlığını daha iyi değerlendirmeye yardımcı olur.
track_commit_timestamp
off
.Primary Sunucu
Bu başlıkta verilen parametreler, replikasyon verilerini bir veya daha fazla standby sunucuya gönderecek olan master/primary sunucuda ayarlanır. Bu parametrelere ek olarak, wal_level
‘ın primary sunucuda uygun şekilde ayarlanması gerekir. İsteğe bağlı olarak WAL arşivleme de etkinleştirilebilir bkz. Archiving. Standby sunucularda bu parametrelerin değerleri önemsizdir, ancak bir standby’ın primary sunucu olma senaryosuna hazırlık için standby sunucuda da ayarlanabilir.
synchronous_standby_names
pg_stat_replication
view’ı streaming durumunu gösterir). Birden fazla senkron standby’in belirtilmesi, yüksek erişebilirliği (HA) ve veri kaybına karşı koruma sağlar. Bu parametre yalnızca postgresql.conf dosyasından ve sunucu komut satırından ayarlanabilir. vacuum_defer_cleanup_age
VACUUM
ve HOT temizlemesinin ertelenmesi gereken transaction sayısı. Varsayılan sıfır transaction’dır, dead row sürümleri mümkün olan en kısa sürede, yani açık transaction’lar tarafından visible olmaktan çıkar çıkmaz kaldırılır. Bu parametre yalnızca postgresql.conf dosyasından ve sunucu komut satırından ayarlanabilir.Standby Sunucular
Bu başlıkta verilen ayarlar replikasyon verilerini alan standby sunucunun davranışını kontrol eder.
primary_conninfo
primary_slot_name
primary_conninfo
ayarlanmamışsa veya sunucu standby modunda değilse bu ayarın hiçbir etkisi yoktur. promote_trigger_file
pg_ctl promote
ve pg_promote ()
ile promote edilebilir. Bu parametre yalnızca postgresql.conf dosyasından ve sunucu komut satırından ayarlanabilir. hot_standby
on
‘dur. Bu parametre yalnızca sunucu başlangıcında ayarlanabilir. Archive recovery sırasında ve standby modunda etkilidir. max_standby_archive_delay
max_standby_streaming_delay
max_standby_streaming_delay
, WAL verileri streaming replikasyon yoluyla alındığında uygulanır. Bu değer birimsiz belirtilirse milisaniye olarak alınır. Öntanımlı değeri 30 saniyedir. -1 değeri, çakışan sorguların tamamlanması için standby’ın sonsuza kadar beklemesine izin verir. Bu parametre yalnızca postgresql.conf dosyasında ve sunucu komut satırından ayarlanabilir. wal_receiver_create_temp_slot
primary_slot_name
kullanarak) bir WAL alıcısının geçici bir replikasyon slotu oluşturup oluşturmayacağını belirler. Varsayılan olarak kapalıdır. Bu parametre yalnızca postgresql.conf dosyasından ve sunucu komut satırından ayarlanabilir. WAL receiver süreci çalışırken bu parametre değiştirilirse, bu sürecin kapanması için sinyal gönderilerek yeni ayarla tekrar başlatılması beklenir. wal_receiver_status_interval
hot_standby_feedback
wal_receiver_status_interval
‘da bir defadan fazla gönderilmez. Varsayılan değeri off
‘dur. Bu parametre yalnızca postgresql.conf dosyasından ve sunucu komut satırından ayarlanabilir.Cascaded replikasyon kullanımında, geri bildirim primary’e ulaşana kadar upstream’e iletilir. Standby’lar aldıkları geri bildirimi, upstream’e göndermek dışında hiçbir şekilde kullanmaz.
wal_receiver_timeout
wal_retrieve_retry_interval
Archive recovery’de, bu parametre değerini azaltarak yeni WAL log dosyası tespitinde recovery’i daha duyarlı hale getirmek mümkündür. Düşük WAL etkinliğine sahip bir sistemde bu değeri artırmak, WAL arşivine erişim istek miktarını azaltır. Bu, altyapıya erişme miktarının hesaba katıldığı bulut ortamlarında faydalıdır.
recovery_min_apply_delay
5min
olarak ayarlarsanız standby, her transaction commit’ini yalnızca standby’daki sistem süresi primary tarafından bildirilen commit süresinden en az beş dakika geçtiğinde replay eder. Bu değer birimsiz belirtilirse milisaniye olarak alınır. Varsayılan sıfırdır, gecikme yoktur.Sunucular arasındaki replikasyon gecikmesinin bu parametrenin değerini aşması durumunda herhangi bir gecikme eklenmez. Gecikmenin, primary’de yazılan WAL zaman damgası ile standby’daki saat arasında hesaplandığını unutmayın. Ağ gecikmesi veya cascading replikasyon yapılandırmaları sebepli aktarımdaki gecikmeler mevcut bekleme süresini önemli ölçüde azaltabilir. Primary ve standby’daki sistem saatleri senkronize değilse kayıtlar beklenenden daha erken uygulanabilir.
Gecikme, yalnızca transaction commit’leri için WAL kayıtlarında meydana gelir. Diğer kayıtlar olabildiğince çabuk replay edilir. Bu bir problem değildir çünkü MVCC visibility kuralları, ilgili commit kaydı uygulanana kadar etkilerinin görünür olmamasını sağlar.
Gecikme, recovery sırasında veritabanı tutarlı bir duruma ulaştığında, standby promote edilene veya tetiklenene kadar gerçekleşir ve sonrasında standby daha fazla beklemeden recovery’i sonlandırır.
Bu parametre yalnızca postgresql.conf dosyasında veya sunucu komut satırında ayarlanabilir.
Subscribers
Bu başlıkta verilen ayarlar logical replikasyon subscriber davranışını kontrol eder. publisher değerleri konu dışıdır.
max_logical_replication_workers
max_worker_processes
tarafından tanımlanan havuzdan alınır. Öntanımlı değer 4’tür. max_sync_workers_per_subscription
max_logical_replication_workers
tarafından tanımlanan havuzdan alınır. Öntanımlı değeri 2’dir.Kaynak:
[2]. postgresqlco.nf