温馨提示×

Debian中PostgreSQL复制功能如何使用

小樊
41
2025-11-01 06:22:47
栏目: 云计算

在Debian系统中,PostgreSQL的复制功能可以通过流复制(Streaming Replication)或逻辑复制来实现。以下是使用流复制的基本步骤:

1. 准备工作

  • 主服务器(Master):配置为发布者。
  • 从服务器(Slave):配置为订阅者。

主服务器配置

  1. 编辑postgresql.conf文件

    sudo nano /etc/postgresql/<version>/main/postgresql.conf
    

    添加或修改以下配置:

    wal_level = replica
    max_wal_senders = 10
    wal_keep_segments = 64
    hot_standby = on
    
  2. 编辑pg_hba.conf文件

    sudo nano /etc/postgresql/<version>/main/pg_hba.conf
    

    添加以下行以允许从服务器连接:

    host    replication     replicator     <slave_ip>/32    md5
    
  3. 重启PostgreSQL服务

    sudo systemctl restart postgresql
    

从服务器配置

  1. 停止PostgreSQL服务

    sudo systemctl stop postgresql
    
  2. 复制主服务器的数据目录: 使用pg_basebackup工具:

    sudo pg_basebackup -h <master_ip> -U replicator -D /var/lib/postgresql/<version>/main -P --wal-method=stream
    
  3. 编辑recovery.conf文件(在较新的版本中可能是postgresql.auto.conf):

    sudo nano /var/lib/postgresql/<version>/main/recovery.conf
    

    添加以下配置:

    standby_mode = 'on'
    primary_conninfo = 'host=<master_ip> dbname=<dbname> user=replicator password=<password>'
    restore_command = 'cp /var/lib/postgresql/wal_archive/%f %p'
    trigger_file = '/tmp/postgresql.trigger.5432'
    
  4. 创建WAL归档目录并设置权限

    sudo mkdir -p /var/lib/postgresql/wal_archive
    sudo chown postgres:postgres /var/lib/postgresql/wal_archive
    
  5. 启动PostgreSQL服务

    sudo systemctl start postgresql
    

2. 验证复制状态

在主服务器上,可以使用以下命令查看复制状态:

SELECT * FROM pg_stat_replication;

在从服务器上,可以查看日志文件以确认是否成功连接到主服务器并开始接收数据。

注意事项

  • 确保网络连接正常,防火墙允许PostgreSQL端口(默认5432)的通信。
  • 定期检查和维护复制状态,处理可能出现的错误和延迟。
  • 对于生产环境,建议使用SSL加密复制连接以提高安全性。

通过以上步骤,你可以在Debian系统上配置和使用PostgreSQL的流复制功能。根据具体需求,还可以进一步优化和调整配置。

0