当前位置:首页 > 报告详情

2-施博文-浅析腾讯云 PG 自研特性与实践经验-施博文(1).pdf

上传人: 张** 编号:158303 2024-03-31 24页 3.28MB

1、浅析腾讯云 PG 自研特性与实践经验施博文 腾讯云数据库 内核研发工程师实践经验分享01.腾讯云 PG 近年来的一些“踩坑”经验内核自研特性介绍02.腾讯云 PG 做了哪些事情 未来与展望03.腾讯云 PG 的未来目录实践经验分享腾讯云 PG 近年来的一些“踩坑”经验实践经验分享4发布订阅复制槽被占满 问题:只建 1 个发布订阅,设置 max_sync_workers_per_subscription=1,max_replication_slots=92,发布订阅在全量同步阶段卡住(并发)。发布端报错:复制槽全部被名字叫 pg_xxx_sync_xxx 的 slot 占满订阅端报错:origi

2、n 被占满(origin 来标记逻辑复制来源)发布端报错订阅端报错实践经验分享5发布订阅复制槽被占满 原理介绍 针对表 t 的订阅,分为全量和增量两阶段:1.全量阶段:将发布端中 t 的数据 COPY 到订阅端;2.增量阶段:全量阶段结束后,解码 WAL,将关于表 t 的 WAL 解码成逻辑志,发送给订阅端;实践经验分享6发布订阅复制槽被占满 全量阶段订阅端分为以下步骤处理(省略关内容):1.apply 进程启动 table sync worker(表同步进程);2.table sync 进程在发布端创建 pg_sync_xxx slot;3.table sync 进程在订阅端创建 origi

3、n;4.全量同步(COPY)数据;5.同步完成,table sync 进程删除发布端 slot;6.apply 进程删除 origin;7.全量阶段结束,进普通逻辑复制状态(r)实践经验分享7发布订阅复制槽被占满 问题分析:个发布订阅包含多张表时,正常处理的场景如下(max_sync_workers_per_subscription=1)apply 进程视角实践经验分享8发布订阅复制槽被占满 问题分析:异常场景下,t1、t2.在 COPY 阶段出错,订阅端 origin 未被删除apply 进程视角实践经验分享9发布订阅复制槽被占满 问题分析:1.表同步阶段出错,订阅端 origin 未释放,

4、最终占满2.新启动的 table sync worker 会先在发布端创建 pg_xxx_sync_xxxxx slot,然后发现订阅端 origin 被占满,报错退出,此时发布端的 pg_xxx_sync_xxxxxx slot 并不会被删除(PG 14 特性);3.发布端 slot 被占满;4.发布端和订阅端均开始报错,发布订阅卡住,法继续进。影响版本:PG 14、15(pg_xxx_sync_xxxxxx slot 从 temporary slot 变为 permanent slot)实践经验分享10发布订阅复制槽被占满 问题修复:PG 16 已完成部分修复,分为两个 commit 提交

5、(f6c5edb、88f4883),但仍有发问题的可能社区修复:将 origin 的删除动作交由 table sync worker 完成,让其在退出前先删除 订阅端的 origin。异常修复:apply 进程择机将 table sync worker 因为异常退出留下的 origin 删掉临时规避段:订阅端 max_replication_slot 调点 实践经验分享11逻辑复制 walsender 进程卡住 背景:户在使逻辑复制时,发现 walsender 进程卡在同个位点很久(超过 1h),始终不继续向前推进 现场:perf 图显示 CPU 卡在 hash_seq_search 函数上,

6、pg_waldump 对应的 lsn 是条 drop publication 语句。rmgr:Transaction len(rec/tot):475877/475877,tx:1511906902,lsn:1F627/6ADC7DB8,prev1F627/6ADC7D80,desc:COMMIT 2022-12-08 11:22:54.989016 CST;inval msgs:catcache 45 catcache 44 catcache 47 catcache 46 catcache 47 catcache 46 catcache 47 catcache 46 后面省略很多个 catc

word格式文档无特别注明外均可编辑修改,预览文件经过压缩,下载原文更清晰!
三个皮匠报告文库所有资源均是客户上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作商用。
本文是腾讯云数据库内核研发工程师分享的内容,主要分为三个部分:腾讯云PG的自研特性与实践经验,踩坑经验以及未来展望。 自研特性与实践经验方面,文章介绍了腾讯云PG的全量同步阶段卡住的问题,以及通过增加table sync worker和origin的机制来处理。此外,文章还提到了逻辑复制walsender进程卡住的问题,以及通过优化pgoutput和建立反向哈希表来解决。 踩坑经验方面,文章分享了腾讯云PG在发布订阅复制槽被占满的问题,以及在解决这个问题过程中的一些实践经验。例如,通过调整max_sync_workers_per_subscription和max_replication_slots的值来避免全量同步阶段卡住。 未来展望方面,文章提到了腾讯云PG的几个未来发展方向,包括云原生化、智能化和Serverless化。云原生化方面,腾讯云PG将打造基于云原生的操作系统,实现一云多芯。智能化方面,腾讯云PG将推出AI4DB和DB4AI功能,实现数据库自治和机器学习算法处理数据。Serverless化方面,腾讯云PG将提供极致弹性,从卖资源转向卖能力,实现客户与云厂商的双赢。 综上所述,本文主要分享了腾讯云PG的自研特性、踩坑经验以及未来发展方向,为读者提供了深入了解腾讯云PG的实践经验和未来展望。
"腾讯云PG踩坑经验分享" "PG逻辑复制槽占满问题解析" "TencentDB for PG内核自研特性探秘"
客服
商务合作
小程序
服务号
折叠