PolarDB for PG 查杀连接,自己想的很麻烦,其实人家早就有方案
❝开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, OceanBase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,可以解决你的问题。加群请联系 liuaustin3 ,(共3300人左右 1 + 2 + 3 + 4 +5 + 6 + 7 + 8 +9)(1 2 3 4 5 6 7群均已爆满,开8群近400 9群 200+,开10群PolarDB专业学习群100+)
这是一个长系列,我们会记录我们从PostgreSQL 迁移到PolarDB for PG的一个过程,这是长篇的第三篇,这一篇要说的是改变,逐步在生产中使用了PolarDB for PG后我们遇到了一个我们必须遇到,但很快被解决的问题。
这个问题其实我们在PolarDB for MySQL的时候遇到过,就是查询系统信息的问题,这里我们稍微给不懂polardb的小白在补充一点基础知识。
1 PolarDB for PG PolarDB for MySQL 是一个云原生的数据库产品
2 PolarDB for M PolarDB for P 是一个shared storage 的结构 (注意PolarDB 是一个数据库体系的名字,不是一个数据库的名字,我们这里仅仅针对我们上述的两个系列里面的产品)
3 PolarDB for PG ,PolarDB for MySQL 必须有代理,且代理是这个云原生数据库关键的部分。
那么我们遇到了什么问题呢? 对了查询数据库系统信息和对数据库信息进行一些基础操作的问题。
这里我们举例:我们要查询 PolarDB for PG中的时间超过1分钟的链接,并进行清理。 在单机PostgreSQL中,我们只需要运行如下的语句即可。
SELECT
pg_terminate_backend(pid)
FROM
pg_stat_activity
WHERE
state = 'active'
AND now() - query_start > interval '1 minute'
AND pid <> pg_backend_pid();
但是在PolarDB FOR PG中,这样操作是错误的。为什么? 想学PolarDB for PG的看这里。
我们可以看到我们的所有的连接到数据库中都是通过代理的,代理在接收到数据请求后,开始判断我们的这次处理应该打到那个节点。
代理有以下的功能:
1 区分数据的读或写请求,自动进行可读写分离的语句的读写分离
2 对数据库session进行代理级别的复用,降低建立连接的数量和速度
3 甄别从节点的数据与主节点的数据是否一致,如一致,将数据打入到读库,如果发现数据有不一致情况,将数据访问返回到写节点提取数据,全自动化。
那么这里有问题了,你查询的节点一条查询语句下去,pg_stat_activity读取的数据是一个明确的节点,他要么是,写节点,要么是读节点,或另一个读节点,因为PolarDB 支持15个读节点同时在线。
这就产生一个问题,我们在查询后,我们查杀会出现这样的结果
1 我们查询的节点,不是我们想要查杀的节点
2 我们查询的数据后,再次发起查杀,两次操作,可能并不是同一个节点。
那么这里,数据库的状态收集和数据库的操作,就会出现问题。
怎么办!
方案1,建立功能明晰的代理(但有功能限制)
大家看方案1中,代理是可以建立多个,你一个节点建立一个代理是可以的,一个节点可能有多个代理,一个代理也可以有多个节点,有点像绕口令,简略的说,一对多,多对多,多对一,在节点和代理之间的关系是非常灵活的。
方案1中的我们建立只读节点代理,也就是我们图上的从节点代理他只针对从节点,在大部分情况下,1个只读节点就足够了。这样建立后,就形成了,只读节点本身只负责自己的一个只读节点,写节点代理只负责自己的写节点,集群的代理给应用连接使用。
代理就分成两个功能:
1 数据库运行维护类的代理
2 应用系统代理
我们对我们的数据库运维的程序进行重新的梳理, 对于一些操作直接接入主节点代理,而另一些则接入到两个运行维护代理中进行使用。
而阿里云的老师给我们一个提议,其实我们并不需要这么麻烦,我们只需要对监控程序进行一个简单的改造就可以,整体的工作并非我们想的那么的复杂。
然后我们还是通过PolarDB 代理,稍微将语句进行一个改动在我们要 pg_stat_terminate(PID) 的select语句前面加入 /FORCE_ALL/ 即可进行广播节点式的查杀工作。
这里需要提醒,不能在查杀语句中直接使用now() 这样的函数,原因很简单,因为每个节点的NOW()得到的时间未必一致,可能有毫秒的差别,那么now() 函数又怎么能返回一个确定的值,所以语句需要修改,将now() 改成一个具体的时间,而这个具体的时间是一个变量我们输入即可,而变量的时间可以通过任意方法产生。当然这不是一个重点。
所以之前是我们多想了,还弄出一个方案1,设计上PolarDB FOR PG FOR MYSQL 两个数据库可以通过集群代理,来访问到数据库运维中所要去的所有节点,而这里有人会提到。
有必要这么麻烦吗? 节点固定好不就可以了,你固定去定位到固定的节点也可以,实际上PolarDB 是一个serverless的数据库,也就是他可能上一分钟,是2个节点,下一分钟就弹出一个节点,变成3个节点,你是无法固定这些节点的ID或者位置,所以记住今天说了这么多,PolarDB 中的一个命令。
/Force_ALL/ 他可以解决你在单点上可以解决,在云原生上你认为无法解决的 90%的问题。
好了今天就到这里,每天都是学习知识的一天。
和架构师沟通那种“一坨”的系统,推荐只能是OceanBase,Why ?
OceanBase Hybrid search 能力测试,平换MySQL的好选择
写了3750万字的我,在2000字的OB白皮书上了一课--记 《OceanBase 社区版在泛互场景的应用案例研究
OceanBase 6大学习法--OBCA视频学习总结第六章
OceanBase 6大学习法--OBCA视频学习总结第五章--索引与表设计
OceanBase 6大学习法--OBCA视频学习总结第五章--开发与库表设计
OceanBase 6大学习法--OBCA视频学习总结第四章 --数据库安装
OceanBase 6大学习法--OBCA视频学习总结第三章--数据库引擎
OceanBase 架构学习--OB上手视频学习总结第二章 (OBCA)
OceanBase 6大学习法--OB上手视频学习总结第一章
没有谁是垮掉的一代--记 第四届 OceanBase 数据库大赛
跟我学OceanBase4.0 --阅读白皮书 (OB分布式优化哪里了提高了速度)
跟我学OceanBase4.0 --阅读白皮书 (4.0优化的核心点是什么)
跟我学OceanBase4.0 --阅读白皮书 (0.5-4.0的架构与之前架构特点)
跟我学OceanBase4.0 --阅读白皮书 (旧的概念害死人呀,更新知识和理念)
OceanBase 学习记录-- 建立MySQL租户,像用MySQL一样使用OB
“合体吧兄弟们!”——从浪浪山小妖怪看OceanBase国产芯片优化《OceanBase “重如尘埃”之歌》
MongoDB “升级项目” 大型连续剧(3)-- 自动校对代码与注意事项
MongoDB “升级项目” 大型连续剧(2)-- 到底谁是"der"
MongoDB “升级项目” 大型连续剧(1)-- 可“生”可不升
MongoDB 大俗大雅,上来问分片真三俗 -- 4 分什么分
MongoDB 大俗大雅,高端知识讲“庸俗” --3 奇葩数据更新方法
MongoDB 大俗大雅,高端的知识讲“通俗” -- 2 嵌套和引用
MongoDB 大俗大雅,高端的知识讲“低俗” -- 1 什么叫多模
MongoDB 合作考试报销活动 贴附属,MongoDB基础知识速通
MongoDB 使用网上妙招,直接DOWN机---清理表碎片导致的灾祸 (送书活动结束)
MongoDB 2023年度纽约 MongoDB 年度大会话题 -- MongoDB 数据模式与建模
MongoDB 麻烦专业点,不懂可以问,别这么用行吗 ! --TTL
免费PolarDB云原生课程,听课“争”礼品,重塑云上知识,提高专业能力
非“厂商广告”的PolarDB课程:用户共创的新式学习范本--7位同学获奖PolarDB学习之星
“当复杂的SQL不再需要特别的优化”,邪修研究PolarDB for PG 列式索引加速复杂SQL运行
“PostgreSQL” 高性能主从强一致读写分离,我行,你没戏!
POLARDB 添加字段 “卡” 住---这锅Polar不背
PolarDB 版本差异分析--外人不知道的秘密(谁是绵羊,谁是怪兽)
PolarDB 答题拿-- 飞刀总的书、同款卫衣、T恤,来自杭州的Package(活动结束了)
PolarDB for MySQL 三大核心之一POLARFS 今天扒开它--- 嘛是火
PostgreSQL 新版本就一定好--由培训现象让我做的实验
说我PG Freezing Boom 讲的一般的那个同学,专帖给你,看看这次可满意
PostgreSQL 无服务 Neon and Aurora 新技术下的新经济模式 (翻译)
“PostgreSQL” 高性能主从强一致读写分离,我行,你没戏!
全世界都在“搞” PostgreSQL ,从Oracle 得到一个“馊主意”开始
PostgreSQL 加索引系统OOM 怨我了--- 不怨你怨谁
PostgreSQL “我怎么就连个数据库都不会建?” --- 你还真不会!
PostgreSQL 稳定性平台 PG中文社区大会--杭州来去匆匆
PostgreSQL 分组查询可以不进行全表扫描吗?速度提高上千倍?
POSTGRESQL --Austindatabaes 历年文章整理
PostgreSQL 查询语句开发写不好是必然,不是PG的锅
这个 PostgreSQL 让我有资本找老板要 鸡腿 鸭腿 !!
MySQL相关文章
一篇为MySQL用户,分析版本核心差异的文章--8.028-8.4的差异
那个MySQL大事务比你稳定,主从延迟低,为什么? Look my eyes! 因为宋利兵宋老师