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
10
. The value 0
means replication is disabled. Abrupt disconnection of a streaming client might leave an orphaned connection slot behind until a timeout is reached, so this parameter should be set slightly higher than the maximum number of expected clients so disconnected clients can immediately reconnect. This parameter can only be set at server start. Also, wal_level
must be set to replica
or higher to allow connections from standby servers.</p><p>When running a standby server, you must set this parameter to the same or higher value than on the master server. Otherwise, queries will not be allowed in the standby server.</p>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
must be set to replica
or higher to allow replication slots to be used.</p>wal_level
paremetresi replica
veya daha yüksek seviyede ayarlanmalıdırwal_keep_size
wal_keep_size
megabytes, the sending server might remove a WAL segment still needed by the standby, in which case the replication connection will be terminated. Downstream connections will also eventually fail as a result. (However, the standby server can recover by fetching the segment from archive, if WAL archiving is in use.)</p><p>This sets only the minimum size of segments retained in pg_wal; the system might need to retain more segments for WAL archival or to recover from a checkpoint. If wal_keep_size
is zero (the default), the system doesn’t keep any extra segments for standby purposes, so the number of old WAL segments available to standby servers is a function of the location of the previous checkpoint and status of WAL archiving. If this value is specified without units, it is taken as megabytes. This parameter can only be set in the postgresql.conf file or on the server command line.</p>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
max_slot_wal_keep_size
is -1 (the default), replication slots may retain an unlimited amount of WAL files. Otherwise, if restart_lsn of a replication slot falls behind the current LSN by more than the given size, the standby using the slot may no longer be able to continue replication due to removal of required WAL files. You can see the WAL availability of replication slots in pg_replication_slots.</p>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
.</p>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
streaming
in the pg_stat_replication view). Specifying more than one synchronous standby can allow for very high availability and protection against data loss.</p><p>The name of a standby server for this purpose is the application_name
setting of the standby, as set in the standby’s connection information. In case of a physical replication standby, this should be set in the primary_conninfo
setting; the default is the setting of cluster_name
if set, else walreceiver
. For logical replication, this can be set in the connection information of the subscription, and it defaults to the subscription name. For other replication stream consumers, consult their documentation.</p><p>This parameter specifies a list of standby servers using either of the following syntaxes:[FIRST] num_sync ( standby_name [, …] )ANY num_sync ( standby_name [, …] )standby_name [, …] where num_sync is the number of synchronous standbys that transactions need to wait for replies from, and standby_name is the name of a standby server. FIRST
and ANY
specify the method to choose synchronous standbys from the listed servers.</p><p>The keyword FIRST
, coupled with num_sync, specifies a priority-based synchronous replication and makes transaction commits wait until their WAL records are replicated to num_sync synchronous standbys chosen based on their priorities. For example, a setting of FIRST 3 (s1, s2, s3, s4)
will cause each commit to wait for replies from three higher-priority standbys chosen from standby servers s1
, s2
, s3
and s4
. The standbys whose names appear earlier in the list are given higher priority and will be considered as synchronous. Other standby servers appearing later in this list represent potential synchronous standbys. If any of the current synchronous standbys disconnects for whatever reason, it will be replaced immediately with the next-highest-priority standby. The keyword FIRST
is optional.</p><p>The keyword ANY
, coupled with num_sync, specifies a quorum-based synchronous replication and makes transaction commits wait until their WAL records are replicated to at leastnum_sync listed standbys. For example, a setting of ANY 3 (s1, s2, s3, s4)
will cause each commit to proceed as soon as at least any three standbys of s1
, s2
, s3
and s4
reply.</p><p>FIRST
and ANY
are case-insensitive. If these keywords are used as the name of a standby server, its standby_name must be double-quoted.</p><p>The third syntax was used before PostgreSQL version 9.6 and is still supported. It’s the same as the first syntax with FIRST
and num_sync equal to 1. For example, FIRST 1 (s1, s2)
and s1, s2
have the same meaning: either s1
or s2
is chosen as a synchronous standby.</p><p>The special entry *
matches any standby name.</p><p>There is no mechanism to enforce uniqueness of standby names. In case of duplicates one of the matching standbys will be considered as higher priority, though exactly which one is indeterminate.</p><p>Each standby_name should have the form of a valid SQL identifier, unless it is *
. You can use double-quoting if necessary. But note that standby_names are compared to standby application names case-insensitively, whether double-quoted or not.</p><p>If no synchronous standby names are specified here, then synchronous replication is not enabled and transaction commits will not wait for replication. This is the default configuration. Even when synchronous replication is enabled, individual transactions can be configured not to wait for replication by setting the synchronous_commit
parameter to local
or off
.</p><p>This parameter can only be set in the postgresql.conf file or on the server command line.</p>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
hot_standby_feedback
on standby server(s) as an alternative to using this parameter.</p><p>This does not prevent cleanup of dead rows which have reached the age specified by old_snapshot_threshold
.</p>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_conninfo
string, or in a separate ~/.pgpass file on the standby server (use replication
as the database name). Do not specify a database name in the primary_conninfo
string.</p><p>This parameter can only be set in the postgresql.conf file or on the server command line. If this parameter is changed while the WAL receiver process is running, that process is signaled to shut down and expected to restart with the new setting (except if primary_conninfo
is an empty string). This setting has no effect if the server is not in standby mode.</p>primary_slot_name
primary_conninfo
is not set or the server is not in standby mode.</p>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
. This parameter can only be set at server start. It only has effect during archive recovery or in standby mode.</p>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_archive_delay
applies when WAL data is being read from WAL archive (and is therefore not current). If this value is specified without units, it is taken as milliseconds. The default is 30 seconds. A value of -1 allows the standby to wait forever for conflicting queries to complete. This parameter can only be set in the postgresql.conf file or on the server command line.</p><p>Note that max_standby_archive_delay
is not the same as the maximum length of time a query can run before cancellation; rather it is the maximum total time allowed to apply any one WAL segment’s data. Thus, if one query has resulted in significant delay earlier in the WAL segment, subsequent conflicting queries will have much less grace time.</p>max_standby_streaming_delay
max_standby_streaming_delay
applies when WAL data is being received via streaming replication. If this value is specified without units, it is taken as milliseconds. The default is 30 seconds. A value of -1 allows the standby to wait forever for conflicting queries to complete. This parameter can only be set in the postgresql.conf file or on the server command line.</p><p>Note that max_standby_streaming_delay
is not the same as the maximum length of time a query can run before cancellation; rather it is the maximum total time allowed to apply WAL data once it has been received from the primary server. Thus, if one query has resulted in significant delay, subsequent conflicting queries will have much less grace time until the standby server has caught up again.</p>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
). The default is off. This parameter can only be set in the postgresql.conf file or on the server command line. If this parameter is changed while the WAL receiver process is running, that process is signaled to shut down and expected to restart with the new setting.</p>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
. The default value is off
. This parameter can only be set in the postgresql.conf file or on the server command line.</p><p>If cascaded replication is in use the feedback is passed upstream until it eventually reaches the primary. Standbys make no other use of feedback they receive other than to pass upstream.</p><p>This setting does not override the behavior of old_snapshot_threshold
on the primary; a snapshot on the standby which exceeds the primary’s age threshold can become invalid, resulting in cancellation of transactions on the standby. This is because old_snapshot_threshold
is intended to provide an absolute limit on the time which dead rows can contribute to bloat, which would otherwise be violated because of the configuration of a standby.</p>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
, the standby will replay each transaction commit only when the system time on the standby is at least five minutes past the commit time reported by the master. If this value is specified without units, it is taken as milliseconds. The default is zero, adding no delay.</p><p>It is possible that the replication delay between servers exceeds the value of this parameter, in which case no delay is added. Note that the delay is calculated between the WAL time stamp as written on master and the current time on the standby. Delays in transfer because of network lag or cascading replication configurations may reduce the actual wait time significantly. If the system clocks on master and standby are not synchronized, this may lead to recovery applying records earlier than expected; but that is not a major issue because useful settings of this parameter are much larger than typical time deviations between servers.</p><p>The delay occurs only on WAL records for transaction commits. Other records are replayed as quickly as possible, which is not a problem because MVCC visibility rules ensure their effects are not visible until the corresponding commit record is applied.</p><p>The delay occurs once the database in recovery has reached a consistent state, until the standby is promoted or triggered. After that the standby will end recovery without further waiting.</p><p>This parameter is intended for use with streaming replication deployments; however, if the parameter is specified it will be honored in all cases except crash recovery. hot_standby_feedback
will be delayed by use of this feature which could lead to bloat on the master; use both together with care. <p>Synchronous replication is affected by this setting when synchronous_commit
is set to remote_apply
; every COMMIT
will need to wait to be applied.</p></p><p>This parameter can only be set in the postgresql.conf file or on the server command line.</p>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
.</p><p>The default value is 4.</p>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
.</p><p>The default value is 2.</p>max_logical_replication_workers
tarafından tanımlanan havuzdan alınır. Öntanımlı değeri 2’dir.Kaynak:
[2]. postgresqlco.nf