❝开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, OceanBase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,可以解决你的问题。加群请联系 liuaustin3 ,(共3000人左右 1 + 2 + 3 + 4 +5 + 6 + 7 + 8 +9)(1 2 3 4 5 6 7群均已爆满,开8群近400 9群 150+,将开10群)
最近在使用PostgreSQL中遇到一些问题,主要集中在逻辑复制槽的部分,在大型企业使用PostgreSQL中会遇到一个核心的问题,数据的传递和流转的问题,大部分使用PostgreSQL的公司,最终使用的技术都是逻辑复制槽方式。
在更大量的数据传递的过程中,我们遇到的最大的问题就是逻辑复制槽的延迟,给系统给业务带来危害和业务损失的问题,这里进行阐述,希望基于POSTGRESQL研发的国产数据库或RDS,云原生数据库厂商能解决POSTGRESQL的逻辑复制槽的问题。
问题的阐述:
多个逻辑复制槽并用的问题。
PostgreSQL 数据库可以支持多个逻辑库,一个逻辑库是订阅的最大单位,这里需要注意逻辑库的数量,逻辑库的数量增多,订阅逻辑复制槽的数量会同时提高,这非常不利于系统的运行和安全,尤其在数据库系统有多个逻辑订阅者的情况下。于此同时我们还存在其他的需求,比如A客户要30张表,B客户要60张表,他们虽然在一个逻辑库,但是他们要的表不同,我就需要建立两个逻辑复制槽分别对这些表进行输出,产生至少两个订阅,这就导致逻辑复制槽的数量在业务复杂性提高的同时,会远远高于逻辑库的数量。

问题就产生了
1 一个订阅者,拥有一个逻辑复制槽,也就是说即使两个订阅者需要的数据是一致的,但是他们的目的不同,就需要建立两个逻辑复制槽
2 当多个订阅者由于订阅的消费WAL数据的速度不同,会导致由于一个订阅者的消费速度慢而影响整个数据库的WAL的存储造成WAL的堆积
3 一个数据库实例,有多个逻辑库,每个逻辑库一个订阅,这样的情况下订阅的数量也很大,会造成内存和CPU的消耗异常,逻辑复制槽本身限制PG数据库的数据流转的性能和便利性
4 在PG数据库进行切换的过程中,并不带有逻辑复制槽转移的功能,这里需要在新的库上重建逻辑复制槽,这点在很多企业中是无法接受,虽然通过patroni的方案可以进行切换后,逻辑复制槽的重建,但这也并非一个完美的解决方案,每次建立逻辑复制槽失效,在重建逻辑复制槽对于应用部门都是不能被接受的。
5 重复的数据流转的目的地不同,导致多个订阅,最终导致网络流量和数据带宽的超量使用的问题。
建议基于POSTGRESQL厂商开发出一种新的模式来支援POSTGRESQL逻辑复制槽的部分,可以作为一个新的中介使用,方案如下。

这里假设,数据库软件公司开放出一套中间件,通过中间件安装在一台主机中,PG 只需要建立一个物理复制槽的方式来将数据全量同步到中间件,中间件再通过自身的方式给其他的数据订阅方数据。
在目前没有厂商进行优化方案产生的情况下,可以采用从库提供逻辑复制槽的方式来减轻主库的压力,具体方案如下
1 使用POSTGRESQL16版本, wal_level= logical ,从库必须启用 hot_standby_feedback=on, 在主库通过物理复制槽的方式给付从库数据,实际上就是石红data streaming的方式,给付物理的数据流给从库。
从库上进行 pg_create_logical_replication_slot的逻辑复制槽的建立,来隔绝主库所承受的的压力和风险。
+----------------+
| 主库 PG |
| 写操作 |
+--------+-------+
|
(物理复制槽, streaming replication)
|
+--------v--------+
| 从库 PG |
| hot_standby |
+---+----------+--+
| |
(逻辑复制槽) | | (逻辑复制槽)
| |
+--------v--+ +---v--------+
| Debezium | | PG订阅者 |
| + Kafka | | 子系统B |
+-----------+ +------------+
产品设计,在大型企业中使用PostgreSQL 逻辑复制槽的应用需求越来越多,而PostgreSQL逻辑复制槽功能本身存在很多的应用问题,比如上面提到的资源消耗过多,这里我们以ORACLE的LogMiner作为比对对象,虽然Oracle并未提供如不消费日志就不删除日志的功能,相对PostgreSQL对于应用是友好的,可我们需要更灵活的处理方式,让用户可以设置在特殊情况下,直接选择抛弃日志,保证磁盘空间的安全设置,避免由于逻辑复制槽不消费,或消费慢导致的日志挤压后的磁盘空间满了后的数据库运行系统的风险。
同时我们希望PostgreSQL能提供如ORACLE可以设置对外重放日志的时间段的设置,方便数仓在无法追上后的继续增量数据的补偿和跳过后的继续读取日志中的数据的能力。
所以这里建议一些云厂商,针对PostgreSQL在逻辑复制槽中的缺陷问题,予以重视。开发出更适合多逻辑库,多复制槽输出数据的高性能场景的支持,方便大型上云的企业,更好更方便的使用PostgreSQL 在大型企业Saas类的应用场景的需求满足。
置顶
泉城济南IvorySQL 2025 “雷暴云” 就在云和云原生会场
SQL SERVER 2025发布了, China幸亏有信创!
MongoDB 麻烦专业点,不懂可以问,别这么用行吗 ! --TTL
PostgreSQL 新版本就一定好--由培训现象让我做的实验
删除数据“八扇屏” 之 锦门英豪 --我去-BigData!
写了3750万字的我,在2000字的OB白皮书上了一课--记 《OceanBase 社区版在泛互场景的应用案例研究》
疯狂老DBA 和 年轻“网红” 程序员 --火星撞地球-- 谁也不是怂货
和架构师沟通那种“一坨”的系统,推荐只能是OceanBase,Why ?
OceanBase 相关文章
写了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
MongoDB 相关文章
MongoDB “升级项目” 大型连续剧(4)-- 与开发和架构沟通与扫尾
MongoDB “升级项目” 大型连续剧(3)-- 自动校对代码与注意事项
MongoDB “升级项目” 大型连续剧(2)-- 到底谁是"der"
MongoDB “升级项目” 大型连续剧(1)-- 可“生”可不升
MongoDB 大俗大雅,上来问分片真三俗 -- 4 分什么分
MongoDB 大俗大雅,高端知识讲“庸俗” --3 奇葩数据更新方法
MongoDB 大俗大雅,高端的知识讲“通俗” -- 2 嵌套和引用
MongoDB 大俗大雅,高端的知识讲“低俗” -- 1 什么叫多模
MongoDB 合作考试报销活动 贴附属,MongoDB基础知识速通
MongoDB 使用网上妙招,直接DOWN机---清理表碎片导致的灾祸 (送书活动结束)
MongoDB 2023年度纽约 MongoDB 年度大会话题 -- MongoDB 数据模式与建模
MongoDB 双机热备那篇文章是 “毒”
MongoDB 会丢数据吗?在次补刀MongoDB 双机热备
MONGODB ---- Austindatabases 历年文章合集
PolarDB 相关文章
MySQL 和 PostgreSQL 可以一起快速发展,提供更多的功能?
“PostgreSQL” 高性能主从强一致读写分离,我行,你没戏!
POLARDB 添加字段 “卡” 住---这锅Polar不背
PolarDB 版本差异分析--外人不知道的秘密(谁是绵羊,谁是怪兽)
PolarDB 答题拿-- 飞刀总的书、同款卫衣、T恤,来自杭州的Package(活动结束了)
PolarDB for MySQL 三大核心之一POLARFS 今天扒开它--- 嘛是火
PostgreSQL 相关文章
PostgreSQL 新版本就一定好--由培训现象让我做的实验
PostgreSQL 无服务 Neon and Aurora 新技术下的新经济模式 (翻译)
“PostgreSQL” 高性能主从强一致读写分离,我行,你没戏!
PostgreSQL 添加索引导致崩溃,参数调整需谨慎--文档未必完全覆盖场景
PostgreSQL SQL优化用兵法,优化后提高 140倍速度
PostgreSQL 运维的难与“难” --上海PG大会主题记录
PostgreSQL 什么都能存,什么都能塞 --- 你能成熟一点吗?
全世界都在“搞” PostgreSQL ,从Oracle 得到一个“馊主意”开始
PostgreSQL 加索引系统OOM 怨我了--- 不怨你怨谁
PostgreSQL “我怎么就连个数据库都不会建?” --- 你还真不会!
病毒攻击PostgreSQL暴力破解系统,防范加固系统方案(内附分析日志脚本)
PostgreSQL 远程管理越来越简单,6个自动化脚本开胃菜
PostgreSQL 稳定性平台 PG中文社区大会--杭州来去匆匆
PostgreSQL 分组查询可以不进行全表扫描吗?速度提高上千倍?
POSTGRESQL --Austindatabaes 历年文章整理
PostgreSQL 查询语句开发写不好是必然,不是PG的锅
PostgreSQL 字符集乌龙导致数据查询排序的问题,与 MySQL 稳定 "PG不稳定"
PostgreSQL Patroni 3.0 新功能规划 2023年 纽约PG 大会 (音译)
PostgreSQL 玩PG我们是认真的,vacuum 稳定性平台我们有了
PostgreSQL DBA硬扛 垃圾 “开发”,“架构师”,滥用PG 你们滚出 !(附送定期清理连接脚本)
MySQL相关文章
MySQL 的SQL引擎很差吗?由一个同学提出问题引出的实验
用MySql不是MySQL, 不用MySQL都是MySQL 横批 哼哼哈哈啊啊
MYSQL --Austindatabases 历年文章合集
临时工访谈系列
没有谁是垮掉的一代--记 第四届 OceanBase 数据库大赛
SQL SERVER 系列
SQL SERVER 如何实现UNDO REDO 和PostgreSQL 有近亲关系吗