当前位置:网站首页>使用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 dynamically add script dependent scripts
- 怎么把elastic中的异常登录ip和日志自动导出或抓取到数据库中?
- 数据治理平台项目总结和分析
- This Thursday evening at 19:00, the fourth live broadcast of knowledge empowerment丨The realization of equipment control of OpenHarmony smart home project
- 系统设计.秒杀系统
- 深度学习环境配置
- 烧录场景下开发如何进行源代码保密工作
- mysql索引笔记
- 2022杭电多校联赛第五场 题解
猜你喜欢

学会iframe并用其解决跨域问题

外卖店优先级

【MD5】采用MD5+盐的加密方式完成注册用户和登录账号

2022杭电多校联赛第五场 题解

Hey, I had another fight with HR in the small group!
SQL injection in #, - +, - % 20, % 23 is what mean?

Functions, recursion and simple dom operations

复现20字符短域名绕过

Basic characteristics of TL431 and oscillator circuit

7. The principle description of LVS load balancing cluster
随机推荐
Basic characteristics of TL431 and oscillator circuit
机器学习之视频学习【更新】
拿捏JVM性能优化(自己笔记版本)
JVM Notes
七夕节,我用代码制作了表白信封
【C语言进阶】程序环境和预处理
Simple operation of the file system
解决问题遇到的问题
看DevExpress丰富图表样式,如何为基金公司业务创新赋能
7-1 LVS+NAT 负载均衡群集,NAT模式部署
Tensors - Application Cases
【id类型和NSObject指针 ObjectIve-C中】
10 Convolutional Neural Networks for Deep Learning 3
外卖店优先级
go module的介绍与应用
烧录场景下开发如何进行源代码保密工作
内网服务器访问远程服务器的端口映射
3000 words, is take you understand machine learning!
将xml标签转换为txt(voc格式转换为yolo方便进行训练)
if,case,for,while