在Debian系統下配置PostgreSQL的主從復制,可以按照以下步驟進行:
首先,確保在主服務器和從服務器上都安裝了PostgreSQL。
sudo apt update
sudo apt install postgresql postgresql-contrib
postgresql.conf
編輯主服務器上的/etc/postgresql/<version>/main/postgresql.conf
文件,確保以下參數設置正確:
listen_addresses = '*' # 監聽所有IP地址
wal_level = replica # 設置為replica以啟用流復制
max_wal_senders = 10 # 允許的最大WAL發送者數量
wal_keep_segments = 64 # 保留的WAL段數量
pg_hba.conf
編輯主服務器上的/etc/postgresql/<version>/main/pg_hba.conf
文件,添加從服務器的連接權限:
# TYPE DATABASE USER ADDRESS METHOD
host replication replicator <從服務器IP>/32 md5
postgresql.conf
編輯從服務器上的/etc/postgresql/<version>/main/postgresql.conf
文件,確保以下參數設置正確:
listen_addresses = '*' # 監聽所有IP地址
hot_standby = on # 啟用熱備份模式
pg_hba.conf
編輯從服務器上的/etc/postgresql/<version>/main/pg_hba.conf
文件,添加主服務器的連接權限:
# TYPE DATABASE USER ADDRESS METHOD
host all all <主服務器IP>/32 md5
在主服務器上創建一個用于復制的用戶,并授予相應的權限:
CREATE ROLE replicator WITH REPLICATION PASSWORD 'your_password' LOGIN;
在從服務器上執行以下命令,初始化復制:
sudo -u postgres psql -c "SELECT pg_create_restore_point('replication_init')"
在主服務器上獲取當前的WAL日志位置:
sudo -u postgres psql -c "SELECT pg_current_wal_lsn()"
記下這個LSN值。
在從服務器上執行以下命令,配置從服務器連接到主服務器:
sudo -u postgres psql -c "SELECT pg_basebackup('-h <主服務器IP> -U replicator -D /var/lib/postgresql/<version>/main -X stream -P -v --wal-method=stream')"
在從服務器上啟動PostgreSQL服務:
sudo systemctl start postgresql
在主服務器和從服務器上分別執行以下命令,驗證復制狀態:
在主服務器上:
SELECT * FROM pg_stat_replication;
在從服務器上:
SELECT * FROM pg_stat_replication;
如果一切配置正確,從服務器應該會顯示正在從主服務器接收WAL日志。
定期監控復制狀態,并根據需要進行維護??梢允褂?code>pg_stat_replication視圖來檢查復制的健康狀況。
通過以上步驟,你應該能夠在Debian系統下成功配置PostgreSQL的主從復制。