ubuntu

Ubuntu PostgreSQL 复制功能如何使用

小樊
35
2025-09-03 00:36:25
栏目: 云计算

以下是在Ubuntu上使用PostgreSQL复制功能的步骤(以流复制为例):

一、环境准备

二、配置主库

  1. 修改配置文件

    • 编辑/etc/postgresql/15/main/postgresql.conf
      wal_level = replica          # 启用WAL日志
      max_wal_senders = 5          # 允许最大复制连接数
      wal_keep_size = 128MB        # 保留WAL日志大小
      hot_standby = on             # 允许从库只读
      listen_addresses = '*'       # 监听所有IP
      
    • 编辑/etc/postgresql/15/main/pg_hba.conf
      host replication replicator 192.168.1.11/32 md5  # 允许从库IP通过复制用户连接
      
    • 重启主库:
      sudo systemctl restart postgresql
      
  2. 创建复制用户

    sudo -u postgres psql
    CREATE ROLE replicator WITH REPLICATION LOGIN PASSWORD 'your_password';
    \q
    

三、配置从库

  1. 清空数据目录并拉取主库数据

    sudo systemctl stop postgresql
    sudo rm -rf /var/lib/postgresql/15/main/*
    sudo -u postgres pg_basebackup -h 192.168.1.10 -D /var/lib/postgresql/15/main -U replicator -P --wal-method=stream
    

    (需输入复制用户密码)

  2. 配置postgresql.conf

    hot_standby = on
    

    (PostgreSQL 12+无需recovery.conf,参数直接写入主配置文件)

  3. 启动从库

    sudo systemctl start postgresql
    

四、验证复制状态

五、可选:逻辑复制(按需选择表同步)

  1. 主库启用逻辑复制:
    wal_level = logical
    max_replication_slots = 5
    
  2. 创建发布和订阅:
    -- 主库:创建发布
    CREATE PUBLICATION pub_all FOR ALL TABLES;
    
    -- 从库:创建订阅
    CREATE SUBSCRIPTION sub_all CONNECTION 'host=192.168.1.10 port=5432 dbname=postgres user=replicator password=your_password'
    PUBLICATION pub_all;
    
    (逻辑复制需在从库手动创建表结构,仅同步数据变更)

注意事项

参考来源:

0
看了该问题的人还看了