溫馨提示×

Debian上PostgreSQL復制功能實現指南

小樊
40
2025-09-01 11:09:45
欄目: 云計算

以下是在Debian上實現PostgreSQL復制功能的指南,支持流復制和邏輯復制兩種主流方式:

一、流復制(主從同步)

1. 主服務器配置

  • 安裝PostgreSQL
    sudo apt update && sudo apt install postgresql postgresql-contrib
  • 修改配置文件
    • postgresql.conf
      listen_addresses = '*'  # 允許所有IP連接
      wal_level = replica     # 啟用WAL日志
      max_wal_senders = 10    # 最大復制連接數
      wal_keep_segments = 64  # 保留WAL文件數量
      hot_standby = on        # 從服務器支持只讀查詢
      
    • pg_hba.conf
      添加從服務器IP的復制權限:
      host replication replicator <從服務器IP>/32 md5
  • 創建復制用戶
    CREATE ROLE replicator WITH REPLICATION PASSWORD '密碼' LOGIN;
    
  • 重啟服務
    sudo systemctl restart postgresql

2. 從服務器配置

  • 停止服務并備份數據(可選):
    sudo systemctl stop postgresql
    (推薦使用pg_basebackup初始化數據目錄,避免手動復制不一致)
  • 配置恢復參數
    編輯postgresql.auto.conf(PostgreSQL 10+)或recovery.conf(9.6及以下):
    standby_mode = 'on'
    primary_conninfo = 'host=主服務器IP port=5432 user=replicator password=密碼'
    restore_command = 'cp /var/lib/postgresql/archive/%f %p'  # 歸檔恢復命令
    trigger_file = '/tmp/postgresql.trigger'  # 手動觸發故障轉移文件
    
  • 啟動服務
    sudo systemctl start postgresql

3. 驗證復制狀態

在從服務器執行:

SELECT * FROM pg_stat_replication;  -- 查看復制進程狀態

二、邏輯復制(表級同步)

1. 主服務器配置

  • 創建發布
    CREATE PUBLICATION my_publication FOR ALL TABLES;  -- 同步所有表
    -- 或指定表:FOR TABLE table1, table2;
    

2. 從服務器配置

  • 創建訂閱
    CREATE SUBSCRIPTION my_subscription
    CONNECTION 'host=主服務器IP dbname=數據庫名 user=replicator password=密碼'
    PUBLICATION my_publication;
    

3. 驗證同步

在從服務器查詢表數據,確認與主服務器一致。

三、注意事項

  1. 權限管理:確保復制用戶具有REPLICATION權限和目標表的訪問權限。
  2. 網絡配置:主從服務器間需開放對應端口(默認5432),并保持網絡穩定。
  3. 版本兼容性:主從服務器PostgreSQL版本需兼容(如主15.x可從15.x/14.x)。
  4. 監控與日志:定期檢查pg_stat_replication和日志文件,確保復制正常。

參考來源


0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女