ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

流复制浅析 —— 主备切换

2021-05-14 16:54:19  阅读:173  来源: 互联网

标签:主库 备库 recovery 复制 主备 pg conf 浅析


作者:瀚高PG实验室(Highgo PG Lab)-天蝎座


流复制切换方式两种:

通过创建触发文件方式触发主备切换

通过pg_ctl promot命令手动触发主备切换


判断主备角色的五种方法:

  1. 查看操作系统WAL进程                  ps -ef |grep wal |grep -v grep      

    wal sender process      表示该库为主库。wal receiver process   表示该库为备库。
  2. 查看数据库WAL进程                     select pid,usename,application_name,client_addr,state,sync_state from pg_stat_replication;

  3. 通过系统函数查看                          select pg_is_in_recovery();

     f表示主库,t表示备库。
  4. 查看数据库控制信息                       pg_controldata  |grep "Database cluster state"    

    in production   表示主库。   in archive recovery  表示备库。
  5. 通过recovery.conf配置文件查看    检查$PGDATA目录下是否存在recovery.conf

    存在recovery.conf文件为备库。


触发器文件主备切换步骤:

  • 配置备库revocery.conf文件 trigger_file参数,设置激活备库的触发文件路径和名称

  • 关闭主库,建议使用-m fast模式关闭

  • 在备库上创建触发文件激活备库,如果recovery.conf变成recovery.done表示备库已经切换成主库

  • 将原主库切换为备库,启动数据库,检查进程


备库recovery.conf

recovery_target_timeline='latest'

standby_mode=on

primary_conninfo='host=192.168.80.126 port=5432 user=postgres'

trigger_file='/data/pg10/.postgres.trigger.5432'

pg_ctl promot主备切换步骤:

pg_ctl promot -D datadir


pg_rewind是流复制维护时一个非常好的数据同步工具,用于在未关闭原主库便将备库提升为主库的情况下,将原主库恢复为备库。

pg_rewind并非全量从主库同步数据,只是复制变化的数据。

使用pg_rewind的前提条件为以下之一:

  • wal_log_hints参数设置为on

  • 数据库initdb时使用了 --data-checksums选项,打开这个选项开启后会在数据块上进行检测以发现I/O错误,开启后性能有损失。


具体步骤:

  • 激活备库: pg_ctl promote

  • 将主库关闭,使用pg_rewind工具增量同步原备库上的数据到原主库:

  • pg_rewind --target-pgdata $PGDATA --source-server='host=102.168.80.127 port=5432 user=postgres dbname=postgres' -P

  • 将recovery.done重命名为recovery.conf

  • 启动数据库pg_ctl start


标签:主库,备库,recovery,复制,主备,pg,conf,浅析
来源: https://blog.51cto.com/u_13646489/2776102

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有