在CentOS上使用PostgreSQL的復制功能,通常是指設置一個PostgreSQL數據庫實例作為主節點(Master),另一個或多個實例作為從節點(Slave),以實現讀寫分離、數據備份和提高系統可用性。以下是設置PostgreSQL復制的基本步驟:
postgresql.conf
和pg_hba.conf
文件配置正確,允許從服務器連接。編輯主服務器上的postgresql.conf
文件:
sudo vi /var/lib/pgsql/data/postgresql.conf
找到并修改以下參數:
wal_level = replica # 設置為replica以支持流復制
max_wal_senders = 10 # 允許的最大WAL發送進程數
wal_keep_segments = 64 # 保留的WAL文件段數
然后編輯pg_hba.conf
文件:
sudo vi /var/lib/pgsql/data/pg_hba.conf
添加以下行以允許從服務器連接:
host replication replicator <從服務器IP>/32 md5
這里的<從服務器IP>
是從服務器的IP地址。
在主服務器上創建一個用于復制的用戶:
CREATE USER replicator WITH REPLICATION PASSWORD 'your_password' LOGIN;
在主服務器上執行以下SQL命令來獲取當前的復制狀態:
SELECT * FROM pg_stat_replication;
記下xlog_location
的值,稍后會在從服務器上使用。
在從服務器上編輯postgresql.conf
文件:
sudo vi /var/lib/pgsql/data/postgresql.conf
找到并修改以下參數:
hot_standby = on # 啟用熱備份模式
然后編輯recovery.conf
文件(如果不存在則創建):
sudo vi /var/lib/pgsql/data/recovery.conf
添加以下內容:
standby_mode = 'on'
primary_conninfo = 'host=<主服務器IP> dbname=<數據庫名> user=replicator password=your_password'
restore_command = 'cp /var/lib/pg_xlog/archive/%f %p' # 如果使用歸檔模式
trigger_file = '/tmp/postgresql.trigger.5432' # 觸發文件路徑
這里的<主服務器IP>
是主服務器的IP地址,<數據庫名>
是要復制的數據庫名稱。
在從服務器上啟動PostgreSQL服務:
sudo systemctl start postgresql
在從服務器上執行以下SQL命令來驗證復制狀態:
SELECT * FROM pg_stat_replication;
如果一切配置正確,你應該能看到從服務器正在連接到主服務器并接收WAL數據。
以上步驟提供了一個基本的PostgreSQL復制配置指南。根據你的具體需求和環境,可能需要進行額外的配置和調整。