天天看點

postgresql主從備份_基于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;

假如出現如下的查詢結果,便說明已經開始同步了

postgresql主從備份_基于windows平台的postgresql主從資料庫流備份配置

此時在主庫上進行增删改操作,打開從庫檢視是否同步

二、主從切換

如果主庫挂了,需要緊急使用從庫來作為主庫,以便服務能盡快恢複,操作方法如下:

(1)改一下從庫的recovery.conf檔案名。

(2)主庫上新增recovery.conf檔案,按照上文的從庫配置方式配置一遍。重新開機主庫,此時主庫變更為從庫

修改軟體程式連結的資料庫位址即可

三、問題記錄及解決方案

1.從庫配置data之後啟動不了

自己看日志(windows系統日志 + pg日志)

(1)删除data檔案夾下的postmaster.pid。

(2)修改data檔案夾權限,給所有使用者權限。