PostgreSQL 高可用、負載均衡和復制

2021-09-01 15:35 更新

數(shù)據(jù)庫服務器可以一起工作,這樣如果主要的服務器失效則允許一個第二服務器快速接手它的任務(高可用性),或者可以允許多個計算機提供相同的數(shù)據(jù)(負載均衡)。理想情況下,數(shù)據(jù)庫服務器能夠無縫地一起工作。提供靜態(tài)網頁服務的網頁服務器可以非常容易地通過把網頁請求均衡到多個機器來組合。事實上,只讀的數(shù)據(jù)庫服務器也可以相對容易地組合起來。不幸的是,大部分數(shù)據(jù)庫服務器收到的請求是讀/寫混合的,并且讀/寫服務器更難于組合。這是因為盡管只讀數(shù)據(jù)只需要在每臺服務器上放置一次,但對于任意服務器的一次寫動作卻必須被傳播給所有的服務器,這樣才能保證未來對于那些服務器的讀請求能返回一致的結果。

這種同步問題是服務器一起工作的最根本的困難。因為沒有單一解決方案能夠消除該同步問題對所有用例的影響。有多種解決方案,每一種方案都以一種不同的方式提出了這個問題,并且對于一種特定的負載最小化了該問題所產生的影響。

某些方案通過只允許一臺服務器修改數(shù)據(jù)來處理同步。能修改數(shù)據(jù)的服務器被稱為讀/寫、主控主要服務器。跟蹤主控機中改變的服務器被稱為后備次級服務器。如果一臺后備服務器只有被提升為一臺主控服務器后才能被連接,它被稱為一臺溫后備服務器,而一臺總是能夠接受連接并且提供只讀查詢的后備服務器被稱為一臺 熱后備服務器。

某些方案是同步的,即一個數(shù)據(jù)修改事務只有到所有服務器都提交了該事務之后才被認為是提交成功。這保證了一次故障轉移不會丟失任何數(shù)據(jù)并且所有負載均衡的服務器將返回一致的結果(不管哪臺服務器被查詢)。相反,異步的方案允許在一次提交和它被傳播到其他服務器之間有一些延遲,這產生了切換到一個備份服務器時丟失某些事務的可能性,并且負載均衡的服務器可能會返回略微陳舊的結果。當同步通信可能很慢時,可以使用異步通信。

方案也可以按照它們的粒度進行分類。某些方案只能處理一整個數(shù)據(jù)庫服務器,而其他的允許在每個表或每個數(shù)據(jù)庫的級別上進行控制。

在任何選擇中,都必須考慮性能。通常在功能和性能之間都存在著權衡。例如,在一個低速網絡上的一種完全同步的方案可能使性能減少超過一半,而一種異步的方案產生的性能影響可能是最小的。

本節(jié)的剩余部分勾勒了多種故障轉移、復制和負載均衡方案。


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號