当前位置:网站首页>使用Patroni回调脚本绑定VIP的坑
使用Patroni回调脚本绑定VIP的坑
2022-08-04 04:34:00 【墨天轮】
我们知道patroni可以通过参数callbacks执行回调脚本, 当patroni触发的特定动作比如启动、关闭或者角色切换时会触发这个脚本,我们可以通过这个脚本绑定VIP、立刻执行一次数据库备份或者启动某个服务等等。
对于集群VIP配置网上有很多方案,但是最简单的莫过于使用回调脚本绑定VIP,简单又方便,但是简单就会带来问题,下面分享一个关于使用回调脚本绑定VIP遇到的坑。
我有一个patroni管理的三节点集群(一个主节点、一个同步备节点和一个异步备节点),在一次上线新应用的时候,由于应用同事连接池配置问题导致连接占满(包括复制用到的连接)、负载过高,主备发生了切换,原主节点降备,同步备节点升主,但是由于原主节点负载过高导致VIP没有及时释放,应用仍然对持有VIP的备节点执行大量并发的DML\DDL操作,短暂延迟后新主节点获取VIP同时应用通过VIP在新主节点上执行了大量并发DML\DDL操作,由于连接池配置问题新主节点再次因为连接占满、负载过高发生了主备切换,此时就出现了一个问题,集群所有节点均为只读,主节点错误信息如下:
ERROR: cannot execute UPDATE in a read-only transaction
官方文档中有两个参数:
max_standby_streaming_delay默认为-1允许备机一直等到冲突查询结束。
hot_standby_feedback默认为off,它阻止VACUUM 移除最近死亡的元组并且因此清除冲突不会产生。
这两个参数都使用了默认值,也就是说当备节点执行一个慢SQL,同时主节点对慢查询SQL进行DDL操作时,首先主备会产生延迟,在延迟发生之后再次发生主备切换就会导致集群异常,所有节点均为只读。
如果遇到这样的问题我们只要在所有节点找到并停掉慢查询语句就可以。当然还有最简单的方法,把主节点reovery.conf文件(PG12之前)删掉,重启主节点数据库即可,但是同时可能相应的备节点需要重建。v
数据库集群系统使用一般分为几种情况;
- 主节点负责读写,备节点只作为高可用。
- 主节点负责读写,备节点负责读。
- 主节点只负责写,备节点负责读。
如果第一种情况不使用CALLBACKS方式绑定VIP的话倒是无所谓,如果使用,那么上述三种情况为了避免此类问题都应当合理配置三个参数:
- max_standby_streaming_delay
- hot_standby_feedback
- max_standby_archive_delay
其实问题的根本还是连接池配置不合理,作为数据库DBA的我们很难去左右应用的开发和配置,但是我们要做到数据库合理的参数配置、完善的监控以及合理的建议。
边栏推荐
- How to systematically plan and learn software testing?
- [Ryerson emotional speaking/singing audiovisual dataset (RAVDESS)]
- How to simplify the automation of modern e-procurement?
- 深度学习环境配置
- Jenkins export and import Job Pipeline
- 2003. 每棵子树内缺失的最小基因值 DFS
- For Qixi Festival, I made a confession envelope with code
- 2022 software test interview questions The latest ByteDance 50 real interview questions, 15k have been won after brushing, with explanation + Q&A
- drools from download to postman request success
- 2.15 keil使用电脑端时间日期
猜你喜欢
本周四晚19:00知识赋能第4期直播丨OpenHarmony智能家居项目之设备控制实现
机器学习之视频学习【更新】
Eight guiding principles to help businesses achieve digital transformation success
7-2 LVS+DR概述与部署
mq应用场景介绍
Learn iframes and use them to solve cross-domain problems
TL431的基本特性以及振荡电路
机器学习模型的“可解释性”
数组相关 内容 解析
Functions, recursion and simple dom operations
随机推荐
"Introduction to nlp + actual combat: Chapter 8: Using Pytorch to realize handwritten digit recognition"
7-3 LVS+Keepalived集群叙述与部署
将xml标签转换为txt(voc格式转换为yolo方便进行训练)
How to dynamically add script dependent scripts
docker安装mysql与宿主机相差8小时的问题。
8. Haproxy builds a web cluster
Converts XML tags to TXT format (voc conversion for yolo convenient training)
机器学习模型的“可解释性”
Introduction and application of go module
【MD5】采用MD5+盐的加密方式完成注册用户和登录账号
内网服务器访问远程服务器的端口映射
如何打造一篇优秀的简历
八年软件测试工程师带你了解-测试岗进阶之路
[Ryerson emotional speaking/singing audiovisual dataset (RAVDESS)]
2003. 每棵子树内缺失的最小基因值 DFS
Enterprise live broadcast is on the rise: Witnessing focused products, micro-like embracing ecology
Explain detailed explanation and practice
什么是数字孪生智慧城市应用场景
深度学习之 10 卷积神经网络3
2022 Hangzhou Electric Power Multi-School League Game 5 Solution