2025年9月25日: PostgreSQL 18 釋出!
支援的版本: 當前 (18) / 17 / 16 / 15 / 14 / 13
開發版本: devel
不支援的版本: 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2

第 26 章 高可用性、負載均衡和複製

資料庫伺服器可以協同工作,以便在主伺服器發生故障時(高可用性)能夠快速接管,或者允許多臺計算機服務相同的資料(負載均衡)。理想情況下,資料庫伺服器可以無縫地協同工作。提供靜態網頁的 Web 伺服器可以很容易地組合起來,只需將 Web 請求負載均衡到多臺計算機即可。事實上,只讀資料庫伺服器也可以相對容易地組合起來。不幸的是,大多數資料庫伺服器的請求是讀/寫混合的,而讀/寫伺服器要組合起來要困難得多。這是因為雖然只讀資料只需要在每臺伺服器上放置一次,但對任何一臺伺服器的寫入都必須傳播到所有伺服器,以便將來對這些伺服器的讀取請求返回一致的結果。

這種同步問題是伺服器協同工作的根本困難。由於沒有一個單一的解決方案可以消除所有用例的同步問題的影響,因此存在多種解決方案。每種解決方案都以不同的方式解決此問題,並最大程度地減少其對特定工作負載的影響。

一些解決方案透過只允許一臺伺服器修改資料來處理同步。可以修改資料的伺服器稱為讀/寫、主要伺服器。跟蹤主伺服器更改的伺服器稱為備用輔助伺服器。在提升為主伺服器之前無法連線的備用伺服器稱為冷備用伺服器,而可以接受連線並提供只讀查詢的伺服器稱為熱備用伺服器。

一些解決方案是同步的,這意味著修改資料的事務在所有伺服器都提交事務之前不會被認為是已提交的。這保證了故障轉移不會丟失任何資料,並且所有負載均衡的伺服器無論查詢哪個伺服器都能返回一致的結果。相比之下,非同步解決方案允許提交時間和向其他伺服器傳播之間存在一些延遲,這可能會導致在切換到備份伺服器時丟失一些事務,並且負載均衡的伺服器可能返回稍微過時的結果。當同步速度太慢時,就會使用非同步通訊。

解決方案還可以按粒度進行分類。一些解決方案只能處理整個資料庫伺服器,而其他解決方案則允許在每張表或每個資料庫級別進行控制。

在任何選擇中都必須考慮效能。功能和效能之間通常存在權衡。例如,在慢速網路上完全同步的解決方案可能會將效能降低一半以上,而非同步解決方案可能對效能影響最小。

本節的其餘部分將概述各種故障轉移、複製和負載均衡解決方案。

提交更正

如果您在文件中發現任何不正確、與您對特定功能的使用體驗不符或需要進一步澄清的內容,請使用此表單來報告文件問題。