GaussDB(DWS)快照失败案例(缩容后导致备份失败)

举报
上官寒雨 发表于 2025/08/11 20:13:16 2025/08/11
【摘要】 【问题描述】controller日志及agent日志无明显报错信息,查看沙箱内/home/Ruby目录存在core文件,堆栈如下注:快照日志说明及排查步骤参考如下案例说明https://bbs.huaweicloud.com/blogs/382926【分析步骤】1、解析core堆栈1) 解压tar包复制符号表到gs_roach文件所在目录tar解包路径: /var/chroot/DWS/ma...

【问题描述】

controller日志及agent日志无明显报错信息,查看沙箱内/home/Ruby目录存在core文件,堆栈如下:


注:快照日志说明及排查步骤参考如下案例说明

https://bbs.huaweicloud.com/blogs/382926

【分析步骤】

1、解析core堆栈

1) 解压tar包复制符号表到gs_roach文件所在目录

tar解包路径: /var/chroot/DWS/manager/app/bin

mv /var/chroot/DWS/manager/app/bin/symbols/bin/gs_roach.symbol /var/chroot/DWS/manager/app/bin

2) gdb解core

gdb /var/chroot/DWS/manager/app/bin/gs_roach {core文件路径}  -- 注意是沙箱外路径

3)若gdb界面符号表加载失败异常,需在gdb中执行命令:set solib-search-path /var/chroot/DWS/manager/app/lib,添加后执行bt命令,core正常解析



core分析

在gs_roach中,

g_nodeHeader.nodeCount 表示节点总数 = 12

g_nodeHeader.node 表示节点数组总长度 = 28

显然两个值不匹配,core原因为g_nodeHeader.node数组越界


分析值不匹配的原因

1. 查询静态信息,node编号为28,但是总count只有12


2. 在CN-1-1节点执行命令cm_ctl view |grep -w node发现node编号不连续


问题根因

集群缩容之后,静态配置文件中node编号不会发生改变。备份时需要获取集群状态,再利用静态配置文件中的node编号作为偏移,则会导致数组越界

解决方案

临时方案

刷新node编号为连续id,注意python脚本需要上传到所有节点上,可以上传到一个节点后通过scp命令传到其他节点

gs_ssh -c "scp Ruby@{hostName}:/home/Ruby/refresh_node_id.py /home/Ruby/"

https://clouddevops.huawei.com/domains/327/wiki/32/WIKI2025010201529

实施后验证

1. 在CN-1-1节点执行命令cm_ctl view |grep -w node,node编号已变为连续编号


2. 集群状态正常


3. 快照进程可以正常拉起

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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