Ubuntu20.04安裝Postgres主從備份 一.查看可安裝的Postgres包 #列出相關的軟體包,這裡安裝的是14版本 apt list | grep -w postgresql-14 | tail -1 #下載Postgres apt install -y postgresql-14/f ...
Ubuntu20.04安裝Postgres主從備份
一.查看可安裝的Postgres包
#列出相關的軟體包,這裡安裝的是14版本
apt list | grep -w postgresql-14 | tail -1
#下載Postgres
apt install -y postgresql-14/focal-pgdg
檢查是否安裝成功
#設置服務開機自啟
systemctl enable postgresql.service
二.配置Postgres
# 切換用戶並登錄到資料庫
sudo -u postgres psql
# 修改密碼 SQL
alter user postgres password '<密碼>';
# 添加用戶並賦予replication和login許可權(後面使用此用戶來進行主從)
create role replica login replication encrypted password '<密碼>';
# 查看postgresql的配置文件位置(用來方便後面的修改)
select name, setting from pg_settings where category='文件位置';
配置遠程連接
# 允許遠程登錄
echo "host all all 0.0.0.0/20 md5" >> /etc/postgresql/14/main/pg_hba.conf
# 允許所有地址監聽postgres
echo "listen_addresses='*'" >> /etc/postgresql/14/main/postgresql.conf
# 重啟資料庫
systemctl restart postgresql.service
修改主伺服器的配置文件(postgresql.conf、pg_hba.conf)
vim /etc/postgresql/14/main/postgresql.conf
#主從設置為熱血模式,流複製必選
wal_level=hot_standby
#流複製允許連接進程
max_wal_senders=2
# 預設參數,非主從配置相關參數,表示到資料庫的連接數
wal_keep_size=1000
max_connections=1000
vim /etc/postgresql/14/main/pg_hba.conf
添加如下配置
#允許從資料庫連接主資料庫去拖wal日誌數據
host replication replica <從節點IP>/24 scram-sha-256
重啟服務
systemctl restart postgresql.service
三.配置從主機
首先進行第一步的安裝操作。
然後配置從伺服器
# 先停掉服務,備份下本地數據,並清除本地數據
systemctl stop postgresql
# 切換到postgres用戶下,這樣使用下麵的備份語句的所屬組和所屬用戶就是postgres
su - postgres
# 複製一份,防止誤操作
cp -r /var/lib/postgresql/14/main /var/lib/postgresql/14/main.bak
# 清除本地數據
rm -rf /var/lib/pgsql/14/main
使用下麵命令備份主資料庫中的數據
pg_basebackup -h <主節點IP> -U replica -F p -X stream -P -R -D /var/lib/postgresql/14/main
-h
–指定作為主伺服器的主機。
-D
–指定數據目錄。
-U
–指定連接用戶。
-P
–啟用進度報告。
-v
–啟用詳細模式。
-R
–啟用恢復配置的創建:創建一個standby.signal文件,並將連接設置附加到數據目錄下
修改從伺服器的配置文件(root用戶下)
sudo vim /etc/postgresql/14/main/postgresql.conf
# 在備份的同時允許查詢
hot_standby=on
# 流複製最大延遲 (可選)
max_standby_streaming_delay=30s
# 從向主報告狀態的最大間隔時間 (可選)
wal_receiver_status_interval=10s
# 查詢衝突時向主反饋 #預設參數,非主從配置相關參數,表示到資料庫的連接數 (可選)
hot_standby_feedback=on
# 一般從庫做主要的讀服務時,設置值需要高於主
max_connections=1000
修改之後重啟資料庫
systemctl restart postgresql
查看是否成功,登錄主資料庫查看
#執行sql
select client_addr,sync_state from pg_stat_replication;
查看同步進程