GaussDB逻辑解码复制槽异常

举报
GaussDB 数据库 发表于 2025/12/09 10:58:06 2025/12/09
【摘要】 故障现象逻辑复制槽不推进或推进缓慢。故障原因可能原因有以下:未使用并行解码。已使用并行解码场景:−  无法正确读取日志。−  存在长事务。−  用户未及时反馈接收到的日志位置。处理方法步骤 1     判断当前逻辑复制槽是否使用并行解码。在解码节点上调用SQL函数:select * from gs_get_parallel_decode_status();返回列中parallel_decod...
  • 故障现象

逻辑复制槽不推进或推进缓慢。

  • 故障原因

可能原因有以下:

未使用并行解码。

已使用并行解码场景:

  无法正确读取日志。

−  存在长事务。

  用户未及时反馈接收到的日志位置。

  • 处理方法

步骤 1     判断当前逻辑复制槽是否使用并行解码。

在解码节点上调用SQL函数:

select * from gs_get_parallel_decode_status();

返回列中parallel_decode_num表示解码并行度。如果没有相应复制槽的信息,说明并未使用并行解码,可以考虑使用并行解码功能。

步骤 2     观察读取日志线程是否正常读取日志。

多次调用SQL函数:

select * from gs_get_parallel_decode_status();

观察相应复制槽的reader_lsn列是否稳定增长,如稳定增长说明能正常读取日志,需联系运维人员检查日志是否出现损坏。

步骤 3     观察是否有运行时间长的事务。

查看系统视图pg_stat_activity,观测是否有运行时间长的写事务未结束,发现用长事务时,可以联系业务人员或运维人员尽快结束相关事务。

步骤 4     观察等待解码日志队列和等待拼接日志队列是否已满。

观察步骤2中相应复制槽的返回列read_change_queue_length(对应等待解码日志队列长度)和decode_change_queue_length(对应等待拼接日志队列长度)中各解码线程对应的队列长度是否已满(队列长度等于parallel-queue-size - 1,默认参数下相应值为127,表示队列已满),如已满表示解码结果发送遭到阻塞,应及时取用解码结果或反馈接收到的日志位置。

步骤 5     联系华为工程师确认客户端是否接受到逻辑解码结果并反馈接受日志。

----结束

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。