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下發布的,該許可證在此處進行了維護。