首页主机资讯ubuntu pgadmin如何设置主从复制

ubuntu pgadmin如何设置主从复制

时间2025-12-18 12:50:03发布访客分类主机资讯浏览231
导读:Ubuntu 上使用 pgAdmin 配置 PostgreSQL 主从复制 一 架构与准备 架构选择:使用 PostgreSQL 原生流复制(Streaming Replication),主库可写,备库只读,支持异步与同步两种模式。 版本...

Ubuntu 上使用 pgAdmin 配置 PostgreSQL 主从复制

一 架构与准备

  • 架构选择:使用 PostgreSQL 原生流复制(Streaming Replication),主库可写,备库只读,支持异步同步两种模式。
  • 版本与目录:以 Ubuntu 上的 PostgreSQL 14/15 为例,常见路径为:数据目录 /var/lib/postgresql/14/main(或 /var/lib/postgresql/15/main),配置目录 /etc/postgresql/14/main(或 /etc/postgresql/15/main)。
  • 网络与账号:确保主从服务器间 5432 端口互通;创建复制专用账号(如 replicator),并在主库授权复制权限。

二 主库配置(使用 pgAdmin 执行 SQL 与修改配置文件)

  • 创建复制用户(pgAdmin:Servers → 主库 → Query Tool)
    CREATE ROLE replicator WITH REPLICATION LOGIN ENCRYPTED PASSWORD 'StrongPass123';
        
    
  • 修改 postgresql.conf(pgAdmin:Tools → Server Configuration → postgresql.conf)
    • 建议参数(按实际调优):
      listen_addresses = '*'
      wal_level = replica
      max_wal_senders = 10
      wal_keep_size = 128MB            # 老版本可用 wal_keep_segments
      archive_mode = on
      archive_command = 'cp %p /var/lib/postgresql/14/main/archive/%f'
      
  • 配置 pg_hba.conf(pgAdmin:Tools → Server Configuration → pg_hba.conf)
    • 允许备库复制连接(示例为单 IP,可按网段配置):
      host    replication     replicator      192.168.22.215/32   md5
      
  • 重启主库使配置生效(系统终端执行)
    sudo systemctl restart postgresql@14-main
    

说明:上述参数与步骤为 Ubuntu 上搭建流复制的通用做法,pgAdmin 主要用于执行 SQL 与编辑配置文件,服务重启需在操作系统层面完成。

三 从库初始化与配置(使用 pgAdmin 与系统终端配合)

  • 清空备库数据目录并赋权(系统终端执行)
    sudo systemctl stop postgresql@14-main
    sudo rm -rf /var/lib/postgresql/14/main/*
    sudo mkdir -p /var/lib/postgresql/14/main
    sudo chown postgres:postgres /var/lib/postgresql/14/main
    
  • 拉取基础备份(系统终端执行,使用复制用户)
    export PGPASSWORD='StrongPass123'
    sudo -E -u postgres pg_basebackup \
      -h 192.168.22.131 -U replicator -D /var/lib/postgresql/14/main \
      -P -w -v --wal-method=stream
    
  • 配置备库为只读副本
    • PostgreSQL 12+ 使用 standby.signal(系统终端执行)
      sudo -u postgres touch /var/lib/postgresql/14/main/standby.signal
      
    • 写入主库连接信息(pgAdmin:Tools → Server Configuration → postgresql.conf)
      primary_conninfo = 'host=192.168.22.131 port=5432 user=replicator password=StrongPass123'
      hot_standby = on
      hot_standby_feedback = on
      
  • 启动备库(系统终端执行)
    sudo systemctl start postgresql@14-main
    

说明:pg_basebackup 会创建备库数据目录并自动写入 primary_conninfopostgresql.auto.conf;standby.signal 用于标识该实例为备库。

四 验证与监控

  • 在主库查看复制状态(pgAdmin:Query Tool)
    SELECT client_addr, state, sync_state
    FROM pg_stat_replication;
        
    
    正常应看到从库 client_addr、状态 streaming,以及 sync_stateasync(异步)或 sync(同步)。
  • 查看复制槽(如配置了复制槽)
    SELECT slot_name, plugin, slot_type, active FROM pg_replication_slots;
        
    
  • 备库只读验证(pgAdmin:Query Tool)
    SHOW transaction_read_only;
          -- 应为 on
    

提示:若出现复制中断,检查主库 pg_hba.conf 授权、网络连通性、磁盘空间与 WAL 保留策略(如 wal_keep_size 或复制槽)。

五 可选 同步复制与切换

  • 配置同步复制(在确认网络低延迟且可容忍性能影响时启用)
    • 主库 postgresql.conf(pgAdmin:Server Configuration)
      synchronous_standby_names = 'pgstandby1'
      
    • 备库创建复制槽并写入应用名(系统终端执行)
      sudo -u postgres psql -c "SELECT pg_create_physical_replication_slot('pgstandby1');
          "
      
      在备库 postgresql.auto.conf 中应看到由 pg_basebackup -R -C -S pgstandby1 自动写入的:
      primary_slot_name = 'pgstandby1'
      application_name = 'pgstandby1'
      
      再次在主库查询 pg_stat_replication,应见到 sync_state = sync
  • 计划内切换与故障提升
    • 备库提升为主库(系统终端执行)
      sudo -u postgres pg_ctl promote -D /var/lib/postgresql/14/main
      
    • 原主库恢复后可作为新备库重新接入(重新执行基础备份或使用 pg_rewind 对齐后再启动)。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: ubuntu pgadmin如何设置主从复制
本文地址: https://pptw.com/jishu/774998.html
ubuntu pgadmin如何使用视图 MySQL索引如何创建更高效

游客 回复需填写必要信息