Postgresql

使用 PostgreSQL 創建高可用性集群

  • July 7, 2017

我是數據庫設計的新手。我的任務是創建一個高可用性集群。我用Google搜尋了很多,但是我沒有找到任何在 PostgreSQL 上執行此操作的好方法。

我應該從哪裡開始?創建高可用性集群涉及哪些步驟?

有很多方法可以為 PostgreSQL 設置 HA 集群。有些方法是大而艱難的。

最簡單的方法如下:

  1. 將您的數據庫同步到備用伺服器
  2. 安裝心跳並進行非對稱集群

此方法是建構具有優雅降級的 HA 集群的最簡單方法。

大多數複製方法通常是非同步的。我推薦以下內容:

  • 在兩個數據庫伺服器上安裝 PostgreSQL。

  • 在兩台數據庫伺服器上安裝 DRBD

  • 安裝ucarpLinux Heartbeat來創建

    • 數據庫貴賓
    • 自動故障轉移
  • 在預設 PostgreSQL 數據上掛載 DRBD Primary

  • 將 PostgreSQL 數據複製到其中

  • 在 DRBD 主節點上啟動 PostgreSQL

請記住,DRBD 是同步磁碟級複製

更新 2012-10-18 12:01 EDT

由於 DRBD 是主動/被動網路 RAID-1,因此應通過正確編寫腳本的自動故障轉移來適應 STONITH(射擊頭部中的其他節點)。此外,被動大小(又名 DRBD 輔助)沒有執行 PostgreSQL。DRBD 將簡單地讓網路 RAID-1 設置執行磁碟複製。您為 ucarp 或 Heartbeat 設置的 upscript 應該負責通過執行以下操作來保持悲觀:

  1. 假設 DBVIP
  • 一種。如果 DBVIP 仍在 DRBD Primary 上使用,則 DRBD Secondary 不能承擔 DBVIP
  • 灣。如果 DBVIP 未在 DRBD Primary 上使用,則 DRBD Secondary 可以假定 DBVIP
  1. 對 DRBD 進行腦裂(即,將被動端作為 DRBD 主節點)
  2. 安裝/dev/drbd0/var/lib/pgsql
  3. 啟動 PostgreSQL

如果您使用的 DBVIP 僅出現在一台伺服器上,請不要擔心腦裂情況。擁有 DBVIP 的人將確定數據寫入的位置。如果 DRBD Secondary(又名 Passive Size)執行上述四個步驟,您必須確保 ucarp 或 HeartBeat 的 upscript 檢測到 DBVIP(即,在 DBVIP 上執行 ping -c 並返回空)可供您使用,然後再執行執行ip addr add DBVIP/32 dev (interface)

一旦發生自動故障轉移,您就可以通過執行 ucarp 或 HeartBeat 的下腳本來隱喻地處理 STONITH 以

  • 關閉 PostgreSQL
  • 解除安裝/var/lib/pgsql_/dev/drbd0
  • drbdadm disconnect drbd0
  • drbdadm secondary drbd0

然後,當您知道 DBVIP 在新的主節點上時,轉到新的 DRBD 主節點並執行drbdadm connect drbd0並監控cat /proc/drbd以確保新的 DRBD 主節點與新的 DRBD 輔助節點同步

引用自:https://dba.stackexchange.com/questions/27121