這些參數可以在發送復制數據給一個或多個后備服務器的主控/主要服務器上設置。注意除了這些參數之外,在主控服務器上必須設置合適的wal_level,并且也啟用可選的 WAL 歸檔。這些參數值與后備服務器無關,盡管你可能希望為了準備好一個后備機轉變成主控機來設置這些參數。
synchronous_standby_names (string)
這個參數指定一個支持同步復制的后備服務器的列表。可能會有一個或者多個活動的同步后備服務器,在這些后備服務器確認收到它們的數據之后,等待提交的事務將被允許繼續下去。同步后備服務器是那些名字出現在這個列表中,并且當前已連接并且正在實時流傳輸數據(如pg_stat_replication視圖中streaming 的狀態所示)的服務器。指定多個同步備用可以實現非常高的可用性并防止數據丟失。用于此目的的備用服務器的名稱是備用數據庫的application_name設置, 如備用數據庫的連接信息中所設置的。在物理復制備用的情況下, 這應該在recovery.conf的primary_conninfo 設置中設置;默認值是walreceiver。對于邏輯復制,可以在訂閱的連接信息中設置,并且它默認為訂閱名稱。對于其他復制流消費者,請參閱他們的文檔。這個參數使用下面的語法之一來指定一個后備服務器列表:[FIRST] num_sync ( standby_name [, ...] ) ANY num_sync ( standby_name [, ...] ) standby_name [, ...]其中num_sync 是事務需要等待其回復的同步后備服務器的數量,standby_name 是一個后備服務器的名稱。FIRST和ANY 指定從列出的服務器中選擇同步備用數據庫的方法。關鍵字FIRST加上num_sync,指定基于優先級的同步復制,并使事務提交等待,直到它們的WAL記錄被復制到根據其優先級進行選擇的 num_sync同步備用數據庫。 例如,FIRST 3 (s1, s2, s3, s4) 的設置將導致每個提交等待來自從備用服務器 s1、s2、s3和s4 中選擇出來的三個更高級備用服務器的回復。其名稱出現在列表前面的備用數據庫被賦予更高的優先級,并將被視為同步。 在列表后面出現的其他備用服務器代表潛在的同步備用服務器。如果任何當前的同步備用服務器因任何原因斷開連接, 它將立即被次最高優先級的備用機器替換。關鍵字FIRST是可選的。關鍵字ANY加上num_sync, 指定基于數量的同步復制,并使事務提交等待,直到它們的WAL記錄被復制到 至少num_sync 個列出的備用服務器。例如,ANY 3 (s1, s2, s3, s4) 的設置將導致每個提交至少被s1、s2、 s3 和s4中的任意三個備用服務器回復處理。FIRST和ANY是大小寫無關的。 如果這些關鍵字用作備用服務器的名稱,那么 standby_name必須是雙引號引用的。它與第一個使用FIRST和num_sync 等于1的語法相同。例如,FIRST 1 (s1, s2)和s1, s2 具有相同的含義:選擇s1或s2作為同步備用。特殊項匹配任何備用服務器名稱。沒有機制來強制備用名稱的唯一性。在重復的情況下, 匹配的備用數據庫之一將被視為較高優先級,但確切地說哪一個是不確定的。注意每一個standby_name* 都應該具有合法 SQL 標識符的形式,除非它是*。 如果必要你可以使用雙引號。但是注意在比較 standby_name 和后備機應用程序名稱時是大小寫不敏感的(不管有沒有雙引號)。如果這里沒有指定同步后備機名稱,那么同步復制不能被啟用并且事務提交將不會等待復制。這是默認的配置。即便當同步復制被啟用時,個體事務也可以被配置為不等待復制,做法是將synchronous_commit參數設置為local或off。這個參數只能在postgresql.conf文件中或在服務器命令行上設置。
vacuum_defer_cleanup_age (integer)
指定VACUUM和HOT更新在清除死亡行版本之前,應該推遲多久(以事務數量計)。默認值是零個事務,表示死亡行版本將被盡可能快地清除,即當它們不再對任何打開的事務可見時盡快清除。在一個支持熱后備服務器的主服務器上,你可能希望把這個參數設置為一個非零值。這允許后備機上的查詢有更多時間來完成而不會由于先前的行清除產生沖突。但是,由于該值是用在主服務器上發生的寫事務的數目衡量的,很難預測對后備機查詢可用的附加時間到底是多少。這個參數只能在postgresql.conf文件中或在服務器命令行上設置。你也可以考慮設置后備服務器上的hot_standby_feedback作為使用這個參數的一種替代方案。這無法阻止已經達到old_snapshot_threshold 所指定年齡的死亡行被清除。