基于windows平台的postgresql主從資料庫流備份配置
因工作需要,需要搞pg資料庫的主從備份,上司給了個方向使用流備份,于是開始朝着這個方向進發。
鳴謝大佬A_ccelerator的部落格
一、配置主從庫
1.環境準備
對于 pg 的主從庫配置,建議是使用兩台機器。本文檔基于兩台 windows 環境編寫。
主:
作業系統:windows10
資料庫版本:postgresql-10.4
ip:192.168.61.132
從:
作業系統:windows10
資料庫版本:postgresql-10.4
ip:192.168.61.130
2.配置主庫
(1)配置 pg_hba.conf 檔案
在 pg 的安裝目錄下,找到 pg_hba.conf 檔案
目錄示例:C:\Program Files\PostgreSQL\10\data
在檔案末尾增加一行代碼,目的是增加名為 replica 的使用者,以進行資料庫 同步的操作。填寫的 ip 為從資料庫的位址。
host replication replica 192.168.61.130/32 md5
(2)建立 replica 相關權限
可以在 pgadmin 中直接運作 sql 語句:
CREATE ROLE replica login replication encrypted password 'replica'
(3)配置 postgresql.conf 檔案
在 pg 的安裝目錄下,找到 postgresql.conf 檔案,查找并修改如下配置(如 果前面有#,需要删除#字元):
wal_level = replica
max_wal_senders = 32
wal_keep_segments = 256
wal_sender_timeout = 60s
參數簡要說明:
wal_level //設定流複制模式至少設定為
replica max_wal_senders //這個設定了可以最多有幾個流複制連接配接,差不多有幾個從,就設定幾個
wal_keep_segments //pg_wal 目錄下保留 WAL 日志的個數,每個 WAL 檔案預設 16M,為保 障從庫能在應用歸檔落後時依舊能追上主庫,此值建議設定較大一點。
wal_sender_timeout //設定流複制主機發送資料的逾時時間
(4)啟動主庫
啟動 pg 服務 postgresql-x64-10
3.配置從庫
(1)配置 data
首先将主資料庫的 data 檔案夾内容通過 pg_basebackup 備份過來:
pg_basebackup -F p --progress -D "C:\Program Files\PostgreSQL\10\data2" -h 192.168.61.132 -p 5432 -U replica --password
輸入密碼 replica 等待備份結束
然後關閉 pg 服務,打開 PostgreSQL\10\的目錄可以看到多出了 data2 出來, 此時備份并删除 data 檔案夾,修改 data2 檔案夾名為 data。
(2)配置 recovery.conf 檔案
複制 PostgreSQL\10\share 下的 recovery.conf.sample 到 data 下,重命名 為 recovery.conf。
修改以下配置(如果前面有#,需要删除#字元):
standby_mode = on primary_conninfo = 'host=192.168.61.132 port=5432 user=replica password=replica' recovery_target_timeline = 'latest'
(3)配置 postgresql.conf 檔案
在 pg 的安裝目錄下,找到 postgresql.conf 檔案,查找并修改如下配置(如 果前面有#,需要删除#字元):
hot_standby = on
max_standby_streaming_delay = 30s
wal_receiver_status_interval = 1s
hot_standby_feedback = on
參數簡要說明:
hot_standby //此參數控制在恢複歸檔期間是否支援隻讀操作,設定為 ON 後從庫為隻讀模式。
max_standby_streaming_delay //資料流備份的最大延遲時間
wal_receiver_status_interval //多久向主報告一次從的狀态,當然從每次資料複制都會向主 報告狀态,這裡隻是設定最長的間隔時間。
hot_standby_feedback //如果有錯誤的資料複制,是否向主進行回報
(4)啟動從庫
啟動 pg 服務 postgresql-x64-10
4.确認是否成功
在主資料庫的 pgadmin 中可以執行:
select client_addr,sync_state from pg_stat_replication;
假如出現如下的查詢結果,便說明已經開始同步了

此時在主庫上進行增删改操作,打開從庫檢視是否同步
二、主從切換
如果主庫挂了,需要緊急使用從庫來作為主庫,以便服務能盡快恢複,操作方法如下:
(1)改一下從庫的recovery.conf檔案名。
(2)主庫上新增recovery.conf檔案,按照上文的從庫配置方式配置一遍。重新開機主庫,此時主庫變更為從庫
修改軟體程式連結的資料庫位址即可
三、問題記錄及解決方案
1.從庫配置data之後啟動不了
自己看日志(windows系統日志 + pg日志)
(1)删除data檔案夾下的postmaster.pid。
(2)修改data檔案夾權限,給所有使用者權限。