Postgres 配置 1 主 2 備庫設定, 在主庫新增資料會向兩台備庫資料庫同步資料
Postgres Version : 9.5
相關設定如下:
主 IP: 10.10.17.21
備1 IP: 10.10.17.22
備2 IP: 10.10.17.24
1.先在主庫新增同步帳號
postgres# CREATE ROLE replica login replication encrypted password 'replica';
2.新增同步資料夾
mkdir /data/pg_archive
3.在
10.10.17.21的 pg_hba.conf
replica 用戶連線權限host all all 10.10.17.22/32 trust
host replication replica 10.10.17.22/32 md5
host all all 10.10.17.24/32 trust
host replication replica 10.10.17.24/32 md5
4.修改
10.10.17.21 的 postgresql.conf
listen_addresses ='*'#監聽所有IP
archive_mode = on #允許歸檔
archive_command ='cp %p /data/pg_archive/%f' #用該命令來歸檔日誌文件段
wal_level = hot_standby
max_wal_senders = 32
wal_sender_timeout = 60s #設置流複製主機發送數據的超時時間
max_connections = 100
重啟 Postgres db
pg_ctl stop
pg_ctl start
5. 在備庫 10.10.17.22 連連看 正庫
psql -h 10.10.17.21 -U postgres
要是不行得先查看 防火牆及DB Port 有無開啟
6.配置 postgresql.conf
wal_level = hot_standby
max_connections = 1000 # 這邊設置的連接數要比正庫的還要大
hot_standby = on # 說明備庫資料庫也用於資料查詢
max_standby_streaming_delay = 30s # 數據備份的最大時間
wal_receiver_status_interval = 10s # 最常多久向正庫報告一次備庫的狀態
hot_standby_feedback = on #
wal_keep_segments = 100 #主庫保留多少個 WAL 給備庫
7.配置資料夾及資料
su - postgres
rm -rf /data/pgsql/* #先将data目录下的数据都清空
pg_basebackup -h 10.10.17.21 -U replica -D /data/pgsql/ -X stream -P # 從正庫Copy資料到備庫
mkdir /data/pgsql/pg_archive
8.備庫資料庫 10.10.17.22 新增 recovery.conf 檔案
cp /usr/pgsql-9.5/share/recovery.conf.sample /data/pgsql/recovery.conf
並且修改recovery.conf資料
standby_mode = on # 說明該節點是備庫
primary_conninfo = 'host=10.10.17.21 port=5432 user=replica password=replica' # 正庫的IP及用戶
recovery_target_timeline = 'latest'
配置完重啟DB
pg_ctl stop
pg_ctl start
9.查詢正庫
select client_addr,sync_state from pg_stat_replication;
會出現以下畫面
client_addr | sync_state
-------------+------------
10.10.17.22 | async
(1 筆資料列)
10. 接下來另外一台備庫 10.10.17.24 的資料庫設定 跟 22一樣 (從Step 6做到8)
設定完後查詢正庫就會出現 兩台備庫IP已跟正庫連線的訊息
postgres=# select client_addr,sync_state from pg_stat_replication;
client_addr | sync_state
-------------+------------
10.10.17.24 | async
10.10.17.22 | async
(2 筆資料列)
測試一下,正庫insert資料到備庫兩台, 同步是否正常!
查看 主備庫 同步延遲時間
回覆刪除select pg_xlog_location_diff(sent_location, replay_location) from pg_stat_replication;
postgres soft nofile 20470
回覆刪除postgres hard nofile 655360
postgres soft nproc 20470
postgres hard nproc 163840
postgres soft stack 102400
postgres hard stack 327680
SELECT slot_name, active FROM pg_replication_slots;
回覆刪除