温馨提示×

Debian上PostgreSQL复制功能如何实现

小樊
52
2025-10-25 16:01:22
栏目: 云计算

在Debian上实现PostgreSQL的复制功能,通常有两种方式:流复制(Streaming Replication)和逻辑复制(Logical Replication)。以下是这两种方法的详细步骤:

流复制(Streaming Replication)

流复制是一种物理复制方法,其中一个PostgreSQL实例(主节点)将其实时数据更改流式传输到另一个实例(从节点)。

步骤:

  1. 准备主节点

    • 编辑/etc/postgresql/<version>/main/postgresql.conf文件:
      listen_addresses = '*'  # 允许所有IP连接
      wal_level = replica  # 设置为replica级别
      max_wal_senders = 10  # 最大WAL发送者数量
      wal_keep_segments = 64  # 保留的WAL段数量
      hot_standby = on  # 启用热备份模式
      
    • 编辑/etc/postgresql/<version>/main/pg_hba.conf文件,添加从节点的连接权限:
      host    replication     replicator     <从节点IP>/32    md5
      
  2. 重启主节点

    sudo systemctl restart postgresql
    
  3. 准备从节点

    • 停止从节点的PostgreSQL服务:
      sudo systemctl stop postgresql
      
    • 备份主节点的数据目录(可选,但推荐):
      sudo pg_basebackup -D /var/lib/postgresql/<version>/main -U replicator --password --wal-method=stream
      
    • 创建恢复配置文件/var/lib/postgresql/<version>/main/recovery.conf
      standby_mode = 'on'
      primary_conninfo = 'host=<主节点IP> dbname=postgres user=replicator password=<密码>'
      restore_command = 'cp /var/lib/postgresql/wal_archive/%f %p'
      trigger_file = '/tmp/postgresql.trigger.5432'
      
  4. 启动从节点

    sudo systemctl start postgresql
    

逻辑复制(Logical Replication)

逻辑复制是一种基于发布和订阅的复制方法,适用于跨版本或跨平台的复制。

步骤:

  1. 准备主节点

    • 编辑/etc/postgresql/<version>/main/postgresql.conf文件:
      wal_level = logical  # 设置为logical级别
      max_replication_slots = 4  # 最大复制槽数量
      max_wal_senders = 10  # 最大WAL发送者数量
      
    • 编辑/etc/postgresql/<version>/main/pg_hba.conf文件,添加从节点的连接权限:
      host    replication     replicator     <从节点IP>/32    md5
      
  2. 重启主节点

    sudo systemctl restart postgresql
    
  3. 创建发布

    • 在主节点上创建一个发布:
      CREATE PUBLICATION my_publication FOR TABLE my_table;
      
  4. 准备从节点

    • 停止从节点的PostgreSQL服务:
      sudo systemctl stop postgresql
      
    • 备份主节点的数据目录(可选,但推荐):
      sudo pg_basebackup -D /var/lib/postgresql/<version>/main -U replicator --password --wal-method=stream
      
    • 创建恢复配置文件/var/lib/postgresql/<version>/main/recovery.conf
      standby_mode = 'on'
      primary_conninfo = 'host=<主节点IP> dbname=postgres user=replicator password=<密码>'
      restore_command = 'cp /var/lib/postgresql/wal_archive/%f %p'
      
  5. 启动从节点

    sudo systemctl start postgresql
    
  6. 创建订阅

    • 在从节点上创建一个订阅:
      CREATE SUBSCRIPTION my_subscription
      CONNECTION 'host=<主节点IP> dbname=postgres user=replicator password=<密码>'
      PUBLICATION my_publication;
      

通过以上步骤,你可以在Debian上实现PostgreSQL的复制功能。根据你的具体需求选择合适的复制方法。

0