在Ubuntu上配置PostgreSQL復制涉及幾個步驟,包括設置主服務器和從服務器。以下是一個基本的指南:
安裝PostgreSQL
sudo apt update
sudo apt install postgresql postgresql-contrib
配置postgresql.conf
編輯主服務器的postgresql.conf
文件(通常位于/etc/postgresql/<version>/main/
):
sudo nano /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
編輯pg_hba.conf
文件以允許從服務器連接:
sudo nano /etc/postgresql/<version>/main/pg_hba.conf
添加以下行以允許從服務器連接:
host replication replicator <從服務器IP>/32 md5
重啟PostgreSQL服務
sudo systemctl restart postgresql
創建復制用戶 在主服務器上創建一個用于復制的用戶:
CREATE ROLE replicator WITH REPLICATION PASSWORD 'your_password' LOGIN;
獲取主服務器的LSN(Log Sequence Number) 連接到主服務器并獲取當前的LSN:
sudo -u postgres psql
SELECT pg_current_wal_lsn();
安裝PostgreSQL 確保從服務器上也安裝了PostgreSQL。
配置postgresql.conf
編輯從服務器的postgresql.conf
文件:
sudo nano /etc/postgresql/<version>/main/postgresql.conf
找到并修改以下參數:
listen_addresses = '*' # 允許所有IP連接
hot_standby = on # 啟用熱備模式
配置recovery.conf
在從服務器上創建或編輯recovery.conf
文件(通常位于/var/lib/postgresql/<version>/main/
):
sudo nano /var/lib/postgresql/<version>/main/recovery.conf
添加以下內容:
standby_mode = 'on'
primary_conninfo = 'host=<主服務器IP> dbname=postgres user=replicator password=your_password'
restore_command = 'cp /var/lib/postgresql/wal_archive/%f %p'
trigger_file = '/tmp/postgresql.trigger.5432'
重啟PostgreSQL服務
sudo systemctl restart postgresql
檢查主服務器狀態 在主服務器上運行:
SELECT * FROM pg_stat_replication;
檢查從服務器狀態 在從服務器上運行:
SELECT * FROM pg_stat_replication;
如果一切配置正確,你應該能夠看到從服務器正在接收來自主服務器的數據。
通過以上步驟,你應該能夠在Ubuntu上成功配置PostgreSQL復制。