HG_REPMGR autofailvoer自动故障转移

文章目录

  • 文档用途
  • 详细信息

文档用途

HG_REPMGR自动故障转移配置参考

详细信息

配置集群自动故障转移(failover),需要为集群中的每个节点开启 repmgrd 守护进程。当主节点出现故障后,会自动将合适的备节点提升为新主节点,继

续对外提供服务。示例如下。

  1. 配置 postgresql.replication.conf 文件(所有节点)

在上述 postgresql.replication.conf 的基础上,添加如下参数:

shared_preload_libraries='repmgr'

或者

altersystemsetshared_preload_libraries=pg_pathman,timescaledb,repmgr;

重启数据库:

pg_ctl restart
  1. 配置 hg_repmgr.conf(所有节点)

在现有的 hg_repmgr.conf 文件中添加如下参数:

failover=automatic promote_command='repmgr -f /opt/highgo/5.6.1/conf/hg_repmgr.conf standby promote'follow_command='repmgr -f /opt/highgo/5.6.1/conf/hg_repmgr.conf standby follow --upstream-node-id=%n'

如果需要将 repmgr 的日志定位到固定的日志文件可添加 log_file 参数,如 下:

log_file='/opt/highgo/5.6.1/conf/data/log/hg_repmgr.log'

为了防止上述日志文件不断膨胀,可配置系统的 logrotate。(详细步骤略)

  1. 开启 repmgrd 进程(所有节点)
repmgrd-f/opt/highgo/5.6.1/conf/hg_repmgr.conf-d-p/tmp/hg_repmgrd.pid[highgo@dbrsconf]$ repmgrd-d-p/tmp/hg_repmgrd.pid[2019-05-0614:02:42][NOTICE]repmgrd(repmgrd4.2)startingup[2019-05-0614:02:42][INFO]connectingtodatabase""[2019-05-0614:02:43][ERROR]repmgr extensionnotfoundonthis node[2019-05-0614:02:43][DETAIL]repmgr extensionisavailable butnotinstalledindatabase"highgo"[2019-05-0614:02:43][HINT]checkthat this nodeispartofa repmgr cluster[highgo@dbrsconf]$ highgo=# \cYou are now connectedtodatabase"highgo"asuser"highgo".createextension repmgr;[highgo@dbrsconf]$ repmgrd-f/opt/highgo/5.6.1/conf/hg_repmgr.conf-d-p/tmp/hg_repmgrd.pid[2019-05-0614:21:21][NOTICE]repmgrd(repmgrd4.2)startingup[2019-05-0614:21:21][INFO]connectingtodatabase"host=dbrs user=hgrepmgr dbname=hgrepmgr connect_timeout=2"[highgo@dbrsconf]$ хϢ: set_repmgrd_pid(): provided pidfileis/tmp/hg_repmgrd.pid[2019-05-0614:21:21][NOTICE]startingmonitoringofnode"dbrs"(ID:1)[2019-05-0614:21:21][NOTICE]monitoring clusterprimary"dbrs"(node ID:1)[highgo@dbrs2conf]$ repmgrd-f/opt/highgo/5.6.1/conf/hg_repmgr.conf-d-p/tmp/hg_repmgrd.pid[2019-05-0614:21:50][NOTICE]repmgrd(repmgrd4.2)startingup[2019-05-0614:21:50][INFO]connectingtodatabase"host=dbrs2 user=hgrepmgr dbname=hgrepmgr connect_timeout=2"[highgo@dbrs2conf]$ хϢ: set_repmgrd_pid(): provided pidfileis/tmp/hg_repmgrd.pid[2019-05-0614:21:50][NOTICE]startingmonitoringofnode"dbrs2"(ID:2)[2019-05-0614:21:50][INFO]monitoring connectiontoupstream node"dbrs"(node ID:1)[highgo@dbrsconf]$ ls-atl/tmp/hg_repmgrd.pid-rw-rw-r--. 1 highgo highgo 5 May 6 14:21 /tmp/hg_repmgrd.pid[highgo@dbrsconf]$[highgo@dbrs2conf]$ ls-atl/tmp/hg_repmgrd.pid-rw-rw-r--. 1 highgo highgo 5 May 6 14:21 /tmp/hg_repmgrd.pid[highgo@dbrs2conf]$

提示:这个后台进程,每次重启服务器,都要手动启动吗?

开发回复:目前是,后期会修改为自动

查看集群状态

[highgo@dbrsconf]$ repmgr-f/opt/highgo/5.6.1/conf/hg_repmgr.conf clustershowID|Name|Role|Status|Upstream|Location|Connection string----+-------+---------+-----------+----------+----------+------------------------------------------------------------1|dbrs|primary|*running||default|host=dbrsuser=hgrepmgr dbname=hgrepmgr connect_timeout=22|dbrs2|standby|running|dbrs|default|host=dbrs2user=hgrepmgr dbname=hgrepmgr connect_timeout=2[highgo@dbrsconf]$

模拟主节点故障

1)在 node1 上关闭数据库

pg_ctl stop

2)在 node2 上查看集群状态

[highgo@dbrs2conf]$ repmgr-f/opt/highgo/5.6.1/conf/hg_repmgr.conf clustershowID|Name|Role|Status|Upstream|Location|Connection string----+-------+---------+-----------+----------+----------+------------------------------------------------------------1|dbrs|primary|-failed||default|host=dbrsuser=hgrepmgr dbname=hgrepmgr connect_timeout=22|dbrs2|primary|*running||default|host=dbrs2user=hgrepmgr dbname=hgrepmgr connect_timeout=2WARNING:followingissues were detected-unabletoconnecttonode"dbrs"(ID:1)[highgo@dbrs2conf]$

此时 node2 已经提升为 primary

日志

[highgo@dbrs2conf]$[2019-05-0614:24:14][WARNING]unabletoconnecttoupstream node"dbrs"(node ID:1)[2019-05-0614:24:14][INFO]checking stateofnode1,1of6attempts[2019-05-0614:24:14][INFO]sleeping10seconds untilnextreconnection attempt[2019-05-0614:24:24][INFO]checking stateofnode1,2of6attempts[2019-05-0614:24:24][INFO]sleeping10seconds untilnextreconnection attempt[2019-05-0614:24:34][INFO]checking stateofnode1,3of6attempts[2019-05-0614:24:34][INFO]sleeping10seconds untilnextreconnection attempt[2019-05-0614:24:44][INFO]checking stateofnode1,4of6attempts[2019-05-0614:24:44][INFO]sleeping10seconds untilnextreconnection attempt[2019-05-0614:24:54][INFO]checking stateofnode1,5of6attempts[2019-05-0614:24:54][INFO]sleeping10seconds untilnextreconnection attempt[highgo@dbrs2conf]$[2019-05-0614:25:04][INFO]checking stateofnode1,6of6attempts[2019-05-0614:25:04][WARNING]unabletoreconnecttonode1after6attempts[2019-05-0614:25:04][NOTICE]this nodeisthe only available candidateandwill now promote itself[2019-05-0614:25:04][INFO]promote_commandis:"repmgr -f /opt/highgo/5.6.1/conf/hg_repmgr.conf standby promote"NOTICE: promoting standbytoprimaryDETAIL: promoting server"dbrs2"(ID:2)using"/opt/highgo/5.6.1/bin/pg_ctl -w -D '/opt/highgo/5.6.1/data' promote"DETAIL: waiting upto60seconds(parameter"promote_check_timeout")forpromotiontocomplete NOTICE: STANDBY PROMOTE successful DETAIL: server"dbrs2"(ID:2)was successfully promotedtoprimary[2019-05-0614:25:10][INFO]switchingtoprimarymonitoringmode[2019-05-0614:25:10][NOTICE]monitoring clusterprimary"dbrs2"(node ID:2)
  1. 当 node1 的故障恢复之后,可重新加入集群
[highgo@dbrsconf]$ repmgr-f/opt/highgo/5.6.1/conf/hg_repmgr.conf clustershowID|Name|Role|Status|Upstream|Location|Connection string----+-------+---------+----------------------+----------+----------+------------------------------------------------------------1|dbrs|primary|*running||default|host=dbrsuser=hgrepmgr dbname=hgrepmgr connect_timeout=22|dbrs2|standby|!runningasprimary|dbrs|default|host=dbrs2user=hgrepmgr dbname=hgrepmgr connect_timeout=2

1)重新加入集群 (在故障节点上执行,host指定新的主节点,重新加入后作为standby节点。想想pg_rewind)

repmgr-f/opt/highgo/5.6.1/conf/hg_repmgr.conf node rejoin-d'host=dbrs2 dbname=hgrepmgr user=hgrepmgr'--force-rewind --verbose

注意:执行该命令前应关闭 node1 的 HGDB。

[highgo@dbrsconf]$ repmgr-f/opt/highgo/5.6.1/conf/hg_repmgr.conf node rejoin-d'host=dbrs2 dbname=hgrepmgr user=hgrepmgr'--force-rewind --verboseNOTICE:usingprovided configurationfile"/opt/highgo/5.6.1/conf/hg_repmgr.conf"INFO: prerequisitesforusingpg_rewind are met INFO:0files copiedto"/tmp/repmgr-config-archive-dbrs"NOTICE: executing pg_rewind NOTICE:0files copiedto/opt/highgo/5.6.1/dataINFO: directory"/tmp/repmgr-config-archive-dbrs"deleted INFO: deleting"recovery.done"NOTICE: setting node1's primary to node 2 NOTICE: starting server using "/opt/highgo/5.6.1/bin/pg_ctl -w -D '/opt/highgo/5.6.1/data'start" INFO: demotedprimaryispingable INFO: node1has attachedtoits upstream node NOTICE: NODE REJOIN successful DETAIL: node1isnow attachedtonode2[highgo@dbrsconf]$

2)查看集群状态 repmgr cluster show

[highgo@dbrsconf]$ repmgr-f/opt/highgo/5.6.1/conf/hg_repmgr.conf clustershowID|Name|Role|Status|Upstream|Location|Connection string----+-------+---------+-----------+----------+----------+------------------------------------------------------------1|dbrs|standby|running|dbrs2|default|host=dbrsuser=hgrepmgr dbname=hgrepmgr connect_timeout=22|dbrs2|primary|*running||default|host=dbrs2user=hgrepmgr dbname=hgrepmgr connect_timeout=2[highgo@dbrsconf]$

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1159442.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2026年网络安全学习路线,零基础入门到精通,看这篇就够了!赶紧收藏!

针对2025年网络安全领域的学习路线规划,结合当前技术趋势和未来发展方向,帮助你从入门到进阶,逐步掌握网络安全的核心技能。 一、基础阶段(3-6个月) 目标:建立计算机基础与安全意识 1. 计算机基础 学习…

【必看收藏】RAG分块策略全解析:从入门到精通,解决大模型企业应用痛点

RAG技术通过结合检索与生成,解决大模型在企业应用中的局限性,分块策略是其核心环节。文章详细分析了五种分块策略(固定大小、语义、递归、基于文档结构、基于LLM)的原理、优缺点及适用场景,强调需根据文档类型和应用需…

【2026年最新整理】网络安全学习路线,入门到入坟,史上最全网络安全学习路线整理

很多小伙伴在网上搜索网络安全时,会出来网络安全工程师这样一个职位,它的范围很广,只要是与网络安全挂钩的技术人员都算网络安全工程师,一些小伙伴就有疑问了,网络安全现在真的很火吗? 那么寒哥就带大家看…

MySQL JOIN语法深度解析:从理论到实践的完整指南

目录 一、JOIN的本质与数学基础 二、内连接(INNER JOIN)的深层机制 三、外连接的完整语义解析 四、特殊连接类型的适用场景 五、JOIN性能优化的核心原则 六、JOIN与事务处理的交互影响 七、高级JOIN技术的实践应用 八、JOIN设计的最佳实践 结语 …

CSV Format Flink / PyFlink 读写 CSV 的正确姿势(含 Schema 高级配置)

1、依赖引入 Java/Scala 工程需要加 Flink CSV 依赖&#xff1a; <dependency><groupId>org.apache.flink</groupId><artifactId>flink-csv</artifactId><version>2.2.0</version> </dependency>PyFlink 用户一般可以直接在作…

直流母线电压采集与缓冲调理电路

一、电路类型与原理 这是一个直流母线电压采集与缓冲调理电路,主要功能是将高压直流母线(如 48V)分压后,通过运放构成的电压跟随器进行缓冲,再送入 ADC 进行精确采样。 分压网络:R38(240kΩ)和 R41(20kΩ)组成电阻分压,将 48V 输入按比例降到 3V 左右,满足后续 AD…

Aliro统一生态、UWB精准无感,2026智能门锁格局将迎巨变

曾几何时&#xff0c;智能门锁的进化似乎陷入了瓶颈。指纹识别受环境与皮肤状态影响&#xff0c;人脸识别在光线不佳时可能失灵&#xff0c;而蓝牙或NFC解锁仍需用户掏出手机完成一个“近场接触”的动作。行业亟待一种既能彻底解放双手、又能确保极高安全性的新方案。这一僵局&…

2026 年计算机圈赚钱技能:必学技术盘点,高薪赛道认准这些!

别再迷茫了&#xff0c;这些技能才是就业和财富的硬通货 经常有同学问&#xff1a;“现在学计算机&#xff0c;哪些技能最值得投入时间&#xff1f;学这些东西真的能赚钱吗&#xff1f;” 答案是肯定的&#xff0c;但选对方向很重要。计算机领域正在快速分化&#xff0c;有些…

国外论文参考文献怎么找:实用方法与资源推荐

刚开始做科研的时候&#xff0c;我一直以为&#xff1a; 文献检索就是在知网、Google Scholar 里反复换关键词。 直到后来才意识到&#xff0c;真正消耗精力的不是“搜不到”&#xff0c;而是—— 你根本不知道最近这个领域发生了什么。 生成式 AI 出现之后&#xff0c;学术检…

最近在搞永磁同步电机离线参数辨识的项目,发现不少新手在玩SVPWM时总会遇到死区补偿和高频注入这两个大坑。今天就拿Simulink模型说事,咱们边看代码边唠嗑

SVPWM死区补偿&#xff08;基于电流极性)高频注入法辨识PMSM的dq轴电感&#xff08;离线辨识&#xff09;—simulink先说说SVPWM的实现。在Simulink里用PWM Generator模块生成六路PWM信号时&#xff0c;记得把载波频率设成和实际硬件一致。比如我用的是20kHz&#xff0c;这时候…

深度学习毕设选题推荐:基于python_CNN机器学习卷积神经网络训练识别橘子是否新鲜基于python_CNN深度学习卷积神经网络训练识别橘子是否新鲜

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

基于51单片机的车辆出入光电传感管理系统设计

第1章 系统总体方案设计 1.1 整体方案设计 1.1.1控制系统的选择 方案一&#xff1a;采用DSP作为系统控制器。DSP&#xff08;Digital Signal Processor&#xff09;它是利用数字信号来处理信息的元器件&#xff0c;它对元件值的容限不敏感而且受外部因素影响较小&#xff0c;容…

Spark Streaming:Spark的实时流计算API

你好&#xff0c;我是程序员贵哥。 今天我要与你分享的内容是“Spark Streaming”。 通过上一讲的内容&#xff0c;我们深入了解了Spark SQL API。通过它&#xff0c;我们可以像查询关系型数据库一样查询Spark的数据&#xff0c;并且对原生数据做相应的转换和动作。 但是&#…

20 个超实用 CTF 练习平台,让你从菜鸟进阶大神!零基础入门到精通,看这篇就够!

在网络安全领域&#xff0c;CTF&#xff08;Capture The Flag&#xff09;和渗透测试是每个技术爱好者梦寐以求的技能。但很多人会问&#xff1a;“我该怎么入门&#xff1f;去哪里练习&#xff1f;” 别急&#xff0c;今天我们就为大家整理了20个超实用的CTF和渗透测试练习平台…

亲测好用专科生必看TOP9AI论文平台测评

亲测好用专科生必看TOP9AI论文平台测评 专科生专属AI论文平台测评&#xff1a;选对工具事半功倍 随着AI技术在学术领域的广泛应用&#xff0c;越来越多的专科生开始借助智能写作工具提升论文效率。然而&#xff0c;面对市场上五花八门的AI论文平台&#xff0c;如何选择真正适合…

基于STM32F407设计的汽车仪表系统

摘 要 当前&#xff0c;随着科技的发展&#xff0c;汽车功能的日益增多&#xff0c;汽车仪表系统也变得愈发多元化。传统的机械式指针仪表因为其繁琐的布线方式和点对点的通信方式&#xff0c;已不能满足当前行业的需求。因此&#xff0c;研究一款功能多样&#xff0c;结构简单…

COMSOL玩转锂枝晶:四种生长模式实操指南

comsol锂枝晶模型 四合一 1雪花枝晶 2单点形核 3多点形核 4形状形核 包含相场、浓度场和电场三种物理场&#xff08;雪花枝晶除外&#xff09;&#xff0c;其中单枝晶定向生长另外包含对应的参考文献。锂枝晶模拟可不止调参画图这么简单&#xff0c;今天咱们用COMSOL实现四种典…

收藏这份AI客服构建指南:有赞从0到1的实践经验与思考

有赞分享了AI客服系统从0到1的完整实践历程。项目始于黑客马拉松&#xff0c;初期选用Dify平台快速验证&#xff0c;后采用混合架构应对性能挑战。文章详细阐述了模型选择、Workflow设计、上下文管理、知识工程等关键技术环节&#xff0c;并分享了评测优化和协作管理的经验。核…

网络安全小白自学指南:不用拜师学艺,求人不如靠自己

前言&#xff1a; 趁着今天下班&#xff0c;我花了几个小时整理了下&#xff0c;非常不易&#xff0c;希望大家可以点赞收藏支持一波&#xff0c;谢谢。 我的经历&#xff1a; 我19年毕业&#xff0c;大学专业是物联网工程&#xff0c;我相信很多人在象牙塔里都很迷茫&…

建议收藏:大模型时代程序员新机遇:6大高薪岗位技能要求全解析

文章详细解析了程序员转行大模型的6大方向&#xff1a;NLP工程师、计算机视觉工程师、大模型算法工程师、部署工程师和产品经理。每个方向都阐述了其市场前景和具体技能要求&#xff0c;包括编程能力、数学基础、专业知识和实践经验。文章强调&#xff0c;程序员应根据自身兴趣…