温馨提示×

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