PostgreSQL 中的複製
-
配置主伺服器
-
要求:
- 複製使用者進行復制活動
- 用於儲存 WAL 檔案的目錄
-
建立複製使用者
createuser -U postgres replication -P -c 5 --replication
+ option -P will prompt you for new password + option -c is for maximum connections. 5 connections are enough for replication + -replication will grant replication privileges to the user
-
在資料目錄中建立存檔目錄
mkdir $PGDATA/archive
-
編輯 pg_hba.conf 檔案
這是主機基本身份驗證檔案,包含客戶端自動身份驗證的設定。新增以下條目:
#hosttype database_name user_name hostname/IP method host replication replication <slave-IP>/32 md5
-
編輯 postgresql.conf 檔案
這是 PostgreSQL 的配置檔案。
wal_level = hot_standby
此引數決定從屬伺服器的行為。
`hot_standby` logs what is required to accept read only queries on slave server. `streaming` logs what is required to just apply the WAL's on slave. `archive` which logs what is required for archiving.
archive_mode=on
此引數允許使用
archive_command
引數將 WAL 段傳送到存檔位置。archive_command = 'test ! -f /path/to/archivedir/%f && cp %p /path/to/archivedir/%f'
基本上,
archive_command
的作用是將 WAL 段複製到存檔目錄。wal_senders = 5
這是 WAL 傳送方程序的最大數量。現在重啟主伺服器。
-
-
將 primay 伺服器備份到從屬伺服器
在伺服器上進行更改之前,請停止主伺服器。
要點:在完成所有配置和備份步驟之前,請勿再次啟動該服務。你必須將備用伺服器置於準備好作為備份伺服器的狀態。這意味著必須安裝所有配置設定,並且必須已同步資料庫。否則,流複製將無法啟動
-
現在執行 pg_basebackup 實用程式
pg_basebackup
實用程式將資料從主伺服器資料目錄複製到從資料目錄。$ pg_basebackup -h <primary IP> -D /var/lib/postgresql/<version>/main -U replication -v -P --xlog-method=stream
-D: This is tells pg_basebackup where to the initial backup
-h: Specifies the system where to look for the primary server
-xlog-method=stream: This will force the pg_basebackup to open another connection and stream enough xlog while backup is running.
It also ensures that fresh backup can be started without failing back to using an archive.
-
配置備用伺服器
要配置備用伺服器,你將編輯 postgresql.conf 並建立名為 recovery.conf 的新配置檔案。
hot_standby = on
這指定是否允許你在恢復時執行查詢
-
建立 recovery.conf 檔案
standby_mode = on
將連線字串設定為主伺服器。替換為主伺服器的外部 IP 地址。替換為名為 replication 的使用者的密碼
`primary_conninfo =‘host = port = 5432 user = replication password =’
(可選)設定觸發器檔案位置:
trigger_file = '/tmp/postgresql.trigger.5432'
你指定的
trigger_file
路徑是你希望系統故障轉移到備用伺服器時可以新增檔案的位置。檔案的存在觸發故障轉移。或者,你可以使用 pg_ctl promote 命令來觸發故障轉移。
-
-
啟動備用伺服器
你現在已經準備就緒,並準備啟動備用伺服器
歸因
本文主要源於並歸因於如何設定 PostgreSQL 以實現高可用性和熱備份複製,並對格式和示例進行了微小更改,並刪除了一些文字。該來源是在知識共享公共許可證 3.0下發布的,該許可證在此處進行了維護。