基於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文件夾權限,給所有用戶權限。