PostgreSQL12主从复制——CentOS 7

PostgreSQL12主从复制——CentOS 7

  • 简要描述
    • 前置
    • 主节点配置
    • 从节点

简要描述

PostgreSQL12配置主从复制的步骤

前置

  • 已安装PostgreSQL12
  • 建议源码包安装PostgreSQL12

主节点配置

  • 创建用户
    # 访问数据库(此处为本地访问)
    psql
    # 创建具有复制流操作的用户(postgres=#)
    CREATE ROLE replica login replication encrypted password 'replica的密码';
    CREATE ROLE(返回信息)
    
  • 编辑pg_hba.conf
    # 追加
    # replica为postgres用户
    # XX.XX.XX.XX为从节点的完整IP,如果为网段配置就不是32了,md5为允许密码验证,trust为免密
    # TYPE  DATABASE        USER            ADDRESS                 METHOD
    host    replication     replica         XX.XX.XX.XX/32          trust
    # 需要远程访问,记得加(还有一个监听,在后面配置)
    # 0.0.0.0/0为任意IP
    host    all             all             0.0.0.0/0               md5
    
  • 编辑postgresql.conf
    # 新增或修改下列属性设置
    listen_addresses = '*'  # 监听所有IP
    archive_mode = on # 开启归档
    archive_command = 'test ! -f /home/postgres/pg_archive/%f && cp %p /home/postgres/pg_archive/%f'
    wal_level = replica  # 9.6开始木有hot_standby
    wal_keep_segments = 16  # 暂时还不知道设置为多大合适
    wal_sender_timeout = 60s
    max_connections = 100  # 最大连接数,据说从机需要大于或等于该值
    
    # 保存退出
    # 建立归档文件夹
    mkdir /home/postgres/pg_archive
    
  • 重启postgres
    # /home/postgres/PGDATA 为postgres的数据文件夹
    pg_ctl -D /home/postgres/PGDATA -l logfile restart
    
  • 验证在从节点是否可以访问主节点
    # 在从节点执行
    psql -h 10.20.2.195 -U postgres
    
  • 如果发现不知道密码或密码不正确
    #修改postgres用户密码(数据库)
    ALTER USER postgres WITH PASSWORD '你的密码';
    

从节点

  • 停止从节点的postgres
    # /home/postgres/PGDATA为从节点的数据文件加
    pg_ctl -D /home/postgres/PGDATA -l logfile stop
    
  • 清空数据文件夹(是的你没看错)
    rm -rf /home/postgres/PGDATA/*
    
  • 从主节点获取数据
    # 使用replica用户,从主节点获取备份数据(这条命令建议照抄,有兴趣在深究内部参数) 
    pg_basebackup -h 主节点IP -p 5432 -U replica -Fp -Xs -Pv -R -D /home/postgres/PGDATA
    
  • 编辑standby.signal文件(在数据文件夹内,以此标识从节点)
    # 添加
    standby_mode = 'on'
    # 保存,退出
    
  • 修改postgresql.conf文件
    primary_conninfo = 'host=主节点IP port=5432 user=replica password=replica用户的密码'
    recovery_target_timeline = latest  #默认
    max_connections = 120 #大于主节点,正式环境应当重新考虑此值的大小
    hot_standby = on
    max_standby_streaming_delay = 30s 
    wal_receiver_status_interval = 10s 
    hot_standby_feedback = on 
    
  • 重新启动从节点
    pg_ctl -D /home/postgres/PGDATA -l logfile start
    

你可能感兴趣的:(PostgreSQL,主从复制,PostgreSQL12)