• postgresql实现单主单从


    实现步骤

    1.主库创建一个有复制权限的用户

    1. CREATE ROLE 用户名
    2. login # 有登录权限的角色即是用户
    3. replication #复制权限
    4. encrypted password '密码';

    2.主库配置开放从库外部访问权限

    修改 pg_hba.conf 文件 (相当于开放防火墙

    1. # 类型 数据库 用户 地址 方法
    2. # "local" is for Unix domain socket connections only
    3. host all 上面创建的用户名 从库地址 trust
    4. # Allow replication connections from localhost, by a user with the
    5. # replication privilege.
    6. host replication 上面创建的用户名 从库地址 trust

    上面是允许登录的 地址

    下面是允许复制的地址

    3.设置主库wal复制

     修改主库配置文件 postgresql.conf 

    1. wal_level = replica # wal级别:minimal, replica, or logical
    2. max_wal_senders = 4 # 最大发送进程数
    3. wal_keep_size = 16 # 多大wal文件被写满,单位M; 0 disables
    4. wal_sender_timeout = 60s # wal发送超时时间
    5. max_connections = 100 # 最大连接数,从库需要大于主库这个值

    4.主库备份覆盖从库数据文件

    1.删除从库的数据文件

    2.使用物理备份命令备份主库数据文件到从库

    pg_basebackup -h 主库地址 -p 主库端口 -D 复制到从库数据目录  -U 有复制权限的用户 -Fp -Xs -Pv -R --checkpoint=fast

    5.配置从库备份主库信息

    1. max_connections = 200
    2. recovery_target_timeline = 'latest' # 'current', 'latest', or timeline ID 恢复哪个时间点
    3. primary_conninfo = 'host=10.0.12.12 port=5432 user=用户名 password=密码' # 连接主库信息
    4. hot_standby = on # "off" disallows queries during recovery
    5. max_standby_streaming_delay = 30s # 最大延迟时间
    6. wal_receiver_status_interval = 10s # 向主库发送wal接收状态时间
    7. hot_standby_feedback = on # 发送错误信息
    8. wal_receiver_timeout = 60s # 接收wal超时时间
    9. wal_retrieve_retry_interval = 5s # 等待重试时间间隔

    6.重启从库

    测试

    查询复制信息 

    select client_addr,sync_state from pg_stat_replication;

     

    表示主从部署成功 

    主宕机,从升主 

    模拟主库宕机,从库手动升级为主库,原主库恢复变成从库。

    1.主库停机

    2.从库使用命令 pg_ctl promote升级为主库

    3.这时恢复原主库作为从库,需要同步主库数据 

    1. # 先删除这个从库数据,再同步主库数据
    2. pg_basebackup -h 新主库地址 -D /var/lib/postgresql/data -p 新主库端口 -U 备份用户 -Fp -Xs -Pv -R --checkpoint=fast

    还有一种 利用pg_rewind 命令实现增量同步数据这里没有实现

    4.重启从库

    5.验证

    主库执行

    select client_addr,sync_state from pg_stat_replication; 

  • 相关阅读:
    web网页设计期末课程大作业:美食餐饮文化主题网站设计——HTML+CSS+JavaScript美食餐厅网站设计与实现 11页面
    《实现领域驱动设计》笔记——架构
    Ansible
    对可再生能源和微电网集成研究的新控制技术和保护算法进行基线和测试及静态、时域和频率分析研究(Matlab代码实现)
    Python数据的标准存储方案
    朴素贝叶斯数据分类------
    CTF-sql注入(get)【简单易懂】
    关于python 的自动化测试--初学
    关于Swagger优化
    现有模型的保存与加载(PyTorch版)
  • 原文地址:https://blog.csdn.net/weixin_51262054/article/details/133325630