温馨提示×

Debian下PostgreSQL复制功能如何实现

小樊
57
2025-08-10 05:07:59
栏目: 云计算

在Debian系统下,要实现PostgreSQL的复制功能,通常有两种方式:流复制(Streaming Replication)和逻辑复制(Logical Replication)。以下是实现这两种复制功能的基本步骤:

流复制(Streaming Replication)

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

步骤:

  1. 配置主服务器

    • 编辑/etc/postgresql/<version>/main/postgresql.conf文件,确保以下参数被设置:
      wal_level = replica max_wal_senders = 10 wal_keep_segments = 64 hot_standby = on 
    • 编辑/etc/postgresql/<version>/main/pg_hba.conf文件,添加从服务器的连接信息:
      host replication replicator <从服务器IP>/32 md5 
  2. 重启主服务器

    sudo systemctl restart postgresql 
  3. 创建复制用户: 在主服务器上,使用psql创建一个用于复制的用户:

    CREATE USER replicator WITH REPLICATION PASSWORD 'your_password' LOGIN; 
  4. 配置从服务器

    • 编辑/etc/postgresql/<version>/main/postgresql.conf文件,确保以下参数被设置:
      hot_standby = on 
    • 编辑/etc/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/<版本号>/main/wal_archive/%f %p' trigger_file = '/tmp/postgresql.trigger.5432' 
  5. 启动从服务器

    sudo systemctl start postgresql 

逻辑复制(Logical Replication)

逻辑复制是一种基于发布和订阅的复制方法,适用于跨不同版本的PostgreSQL实例。

步骤:

  1. 配置主服务器

    • 确保wal_level设置为logical
    • 创建一个发布:
      CREATE PUBLICATION my_publication FOR TABLE my_table; 
  2. 配置从服务器

    • 确保wal_level设置为logical
    • 创建一个订阅:
      CREATE SUBSCRIPTION my_subscription CONNECTION 'host=<主服务器IP> dbname=postgres user=replicator password=your_password' PUBLICATION my_publication; 

注意事项:

  • 在配置复制之前,确保主服务器和从服务器的PostgreSQL版本兼容。
  • 确保网络连接正常,防火墙允许PostgreSQL的通信端口(默认是5432)。
  • 定期检查复制状态,确保数据同步正常。

通过以上步骤,你可以在Debian系统下实现PostgreSQL的复制功能。根据具体需求选择合适的复制方式,并进行相应的配置。

0