資料庫PostrageSQL 後備伺服器設定

2021-10-13 07:27:17 字數 1654 閱讀 8963

standby_mode (boolean)

指定是否將postgresql伺服器作為乙個後備伺服器啟動。如果這個引數為on,當到達已歸檔 wal 末尾時該伺服器將不會停止恢復,但是將通過使用restore_command獲得新的wal 段以及/或者通過使用primary_conninfo設定連線到主伺服器來嘗試繼續恢復。

primary_conninfo (string)

指定後備伺服器用來連線主伺服器的連線字串。這個字串的格式在section 34.1.1中描述。如果在這個字串中有任何選項未被指定,那麼將檢查相應的環境變數(見section 34.14)。如果環境變數也沒有被設定,則使用預設值。連線字串應當指定主伺服器的主機名(或位址),以及埠號(如果它和後備伺服器的預設埠不同)。還要指定對應於主伺服器上合適許可權角色的使用者名稱(見section 26.2.5.1)。如果主伺服器要求口令認證,還需要提供乙個口令。它可以在primary_conninfo字串中提供,或者在後備伺服器(使用replication作為資料庫名)的乙個單獨~/.pgpass檔案中提供。不要primary_conninfo字串中指定乙個資料庫名。

如果standby_mode為off,這個設定沒有效果。

primary_slot_name (string)

有選擇地指定通過流複製連線到主伺服器時使用乙個現有的複製槽來控制上游節點上的資源移除(見section 26.2.6)。如果沒有設定primary_conninfo則這個設定無效。

trigger_file (string)

指定乙個觸發器檔案,該檔案的存在會結束後備機中的恢復。即使這個值沒有被設定,你也能夠使用pg_ctl promote來提公升後備機。如果standby_mode為off,這個設定沒有效果。

某人情況下,乙個後備伺服器會盡快恢復來自於主伺服器的 wal 記錄。有乙份資料的延時拷貝是有用的,它能提供機會糾正資料丟失錯誤。這個引數允許你將恢復延遲一段固定的時間,如果沒有指定單位則以毫秒為單位。例如,如果你設定這個引數為5min,對於乙個事務提交,只有當後備機上的系統時鐘超過主伺服器報告的提交時間至少 5分鐘時,後備機才會重放該事務。

有可能伺服器之間的複製延遲會超過這個引數的值,在這種情況下則不會增加延遲。注意延遲是根據主伺服器上寫 wal 的時間戳以及後備機上的當前時間來計算。由於網路延遲或者級聯複製配置導致的傳輸延遲可能會顯著地減少實際等待時間。如果主伺服器和後備機上的系統時鐘不同步,這會導致恢復比預期的更早應用記錄。但這不是乙個主要問題,因為這個引數有用的設定比伺服器之間的典型事件偏差要大得多。

只有在事務提交的 wal 記錄上才會發生延遲。其他記錄還是會被盡可能快地重放,這不會成為問題,因為 mvcc 可見性規則確保了在對應的提交記錄被應用之前它們的效果不會被看到。

一旦恢復中的資料庫已經達到一致狀態,延遲就會產生,直到後備機被提公升或者觸發。在那之後,後備機將會結束恢復並且不再等待。

這個引數的目的是和流複製部署一起使用,但是,如果指定了該引數,所有的情況下都會遵守它。使用這個特性也會讓hot_standby_feedback被延遲,這可能導致主伺服器的膨脹,兩者一起使用時要小心。

資料庫PostrageSQL 架構

邏輯複製從拷貝發布者資料庫上的資料庫快照開始。拷貝一旦完成,發布者上的更改會在它們發生時實時傳送給訂閱者。訂閱者按照資料在發布者上被提交的順序應用資料,這樣任意單一訂閱中的publication的事務一致性才能得到保證。訂閱者資料庫上的應用程序總是將session replication role設...

資料庫PostrageSQL 啟動資料庫伺服器

在任何人可以訪問資料庫前,你必須啟動資料庫伺服器。資料庫伺服器程式是postgres,它必須知道在 能找到它要用的資料。這是用 d選項實現的。因此,啟動伺服器最簡單的方法是 postgres d usr local pgsql data這將把伺服器放在前台執行。這個步驟同樣必須以postgresql...

資料庫PostrageSQL 鎖管理

deadlock timeout integer 這是進行死鎖檢測之前在乙個鎖上等待的總時間 以毫秒計 死鎖檢測相對昂貴,因此伺服器不會在每次等待鎖時都執行這個它。我們樂觀地假設在生產應用中死鎖是不常出現的,並且只在開始檢測死鎖之前等待一會兒。增加這個值就減少了浪費在無用的死鎖檢測上的時間,但是減慢...