基於windows平台的postgresql主從數據庫流備份配置


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM