首页 > 数据库 >【磐维数据库】3.0运行"show events;"命令,引发集群主节点CoreDump

【磐维数据库】3.0运行"show events;"命令,引发集群主节点CoreDump

时间:2024-10-23 17:58:54浏览次数:6  
标签:磐维 show dest CoreDump completionTag cpp entry events

一、环境介绍

数据库
PanWeiDB V2.0-S3.0.0_B01

架构
Intel + x86_64

操作系统
BCLinux-for-Euler-21.10

内核
4.19.90-2107.6.0.0192.8.oe1.bclinux.x86_64

二、故障场景

1、客户环境可以稳定复现

gsql -r
show events;
\c bomcdb;          --------  业务库名称
show events;        --------  database coredump

2、故障截图

 

 

3、查看数据库中的定时作业

三、研发分析

1、公司内部申请"符号表",获取后上传到数据库节点主机,参考《如何使用gdb分析数据库实例crash问题(文档编号 10381.1)》完成"符号表"配置。
2、错误分析定位

gdb堆栈信息:
[Current thread is 1 (LWP 4164310)]
(gdb) bt
#0  0x0000000001b60b16 in heap_form_minimal_tuple (tupleDescriptor=0x14fd369c1c50, values=0x14fd3cc15680, isnull=0x14fd3cc15720, inTuple=0x0) at heaptuple.cpp:2047
#1  0x000000000129b54e in tuplestore_puttupleslot (state=0x14fd36b14050, slot=<optimized out>, need_transform_anyarray=<optimized out>) at tuplestore.cpp:778
#2  0x0000000001914670 in do_tup_output (tstate=tstate@entry=0x14fd3cc15530, values=values@entry=0x14fd1e9c1eb0, values_len=values_len@entry=10, is_null=is_null@entry=0x14fd1e9c1ea6,
    is_null_len=is_null_len@entry=10) at execTuples.cpp:1220
#3  0x000000000174f878 in ShowEventCommand (stmt=stmt@entry=0x14fd3cc60cc8, dest=dest@entry=0x14fd3cc15490) at eventcmds.cpp:913
#4  0x000000000186a5b9 in standard_ProcessUtility (processutility_cxt=<optimized out>, dest=0x14fd3cc15490, sent_to_remote=<optimized out>, completion_tag=0x14fd1e9c27a0 "",
    context=PROCESS_UTILITY_TOPLEVEL, isCTAS=<optimized out>) at utility.cpp:3793
#5  0x000014ffef1cf18f in pgss_ProcessUtility (processutility_cxt=0x14fd1e9c2730, dest=0x14fd3cc15490, sentToRemote=<optimized out>, completionTag=0x14fd1e9c27a0 "",
    context=PROCESS_UTILITY_TOPLEVEL, isCTAS=<optimized out>) at pg_stat_statements.cpp:787
#6  0x000000000187429b in pgaudit_ProcessUtility (processutility_cxt=0x14fd1e9c2730, dest=<optimized out>, sentToRemote=<optimized out>, completionTag=<optimized out>,
    context=<optimized out>, isCTAS=<optimized out>) at auditfuncs.cpp:1532
#7  0x000000000186e78a in ProcessUtility (processutility_cxt=0x14fd1e9c2730, dest=0x14fd3cc15490, sent_to_remote=false, completion_tag=0x14fd1e9c27a0 "", context=<optimized out>,
    isCTAS=<optimized out>) at utility.cpp:1664
#8  0x0000000001860823 in PortalRunUtility (portal=portal@entry=0x14fd36b1a050, utilityStmt=0x14fd3cc60cc8, isTopLevel=isTopLevel@entry=true, dest=dest@entry=0x14fd3cc15490,
    completionTag=completionTag@entry=0x14fd1e9c27a0 "") at pquery.cpp:1777
#9  0x00000000018616f3 in FillPortalStore (portal=portal@entry=0x14fd36b1a050, isTopLevel=isTopLevel@entry=true) at pquery.cpp:1571
#10 0x0000000001862ad5 in PortalRun (portal=portal@entry=0x14fd36b1a050, count=count@entry=9223372036854775807, isTopLevel=isTopLevel@entry=true, dest=dest@entry=0x14fd3cc60d78,
    altdest=altdest@entry=0x14fd3cc60d78, completionTag=completionTag@entry=0x14fd1e9c2a80 "") at pquery.cpp:1174
#11 0x0000000001856c1c in exec_simple_query (query_string=<optimized out>, query_string@entry=0x14fd3cc60050 "show events ;", msg=msg@entry=0x14fd1e9c2bf0, messageType=QUERY_MESSAGE)
    at postgres.cpp:3399
#12 0x000000000185ccb2 in PostgresMain (argc=<optimized out>, argv=argv@entry=0x14fd3bc39d90, dbname=<optimized out>, username=<optimized out>) at postgres.cpp:9894
#13 0x00000000017ae2a6 in BackendRun (port=port@entry=0x14fd1e9c3170) at postmaster.cpp:10046
#14 0x00000000017d60ec in GaussDbThreadMain<(knl_thread_role)1> (arg=0x14fdb14f2a60) at postmaster.cpp:14871
#15 0x00000000017ae331 in InternalThreadFunc (args=<optimized out>) at postmaster.cpp:15520
#16 0x000014ffdd17df1b in ?? () from /usr/lib64/libpthread.so.0
#17 0x000014ffdd0b333f in clone () from /usr/lib64/libc.so.6

四、结论

宕机原因分析如下
"show events"命令,values值=空
系统库 该命令 正常运行
业务库 从0开始 第8列 有个datum=0值

根因定位,和第8列failure_msg信息的数据有关,如果不为NULL的数据中间夹着NULL数据,就会导致实例内核core崩溃。

pg_job的数据有问题,正常job_name,end_date,enable都不应该为空。
但是在创建时,未对这几个字段做非空限制。

临时解决方案:
PKG_SERVICE.job_cancel把pg_job里面的测试任务删除掉。

永久解决方案:
PKG_SERVICE.JOB_SUBMIT创建作业时,若这几个字段未赋值,报错提示非空。
在磐维数据库的1030版本修复

标签:磐维,show,dest,CoreDump,completionTag,cpp,entry,events
From: https://www.cnblogs.com/yuweijade/p/18497700

相关文章

  • 【磐维数据库】Oracle(透明网关)访问磐维数据库(PanWeiDB)
    磐维数据库(PanWeiDB)是由中国移动基于中国本土开源数据库openGauss打造的自研数据库产品,主要面向ICT基础设施。它具有高性能、高可靠性、高安全性和高兼容性的特点,能够支持集中式、分布式、云原生、一体机等多种应用场景。目前,磐维数据库已在中国移动的多个省(区、市)公司及专业公司......
  • ctfshow-pwn-前置基础
    pwn5运行文件,所以我们直接下载文件在虚拟机里运行即可(命令./......)原理:用IDA打开elf,里面只有一个start函数,IDA反汇编的结果是将dword_80490E8指向的内容写入后退出,进入dword_80490E8查看写入的东西对16进制"R"一下转化为字符,得到下面的字符串,因为是小端序,所以字符串的正确形......
  • ctfshow-pwn-Test_your_nc(0-4)
    pwn0签到题,用ssh连接,输入密码,会出现一大堆动画,输入pwd,显示了当前路径,我们直接切到根目录,发现了ctfshow_flag这个文件,直接cat读取得到flag。pwn1签到题,nc连接上直接出答案。pwn2用nc连接上之后,看题目提示输入cat/ctfshow_flag,得到flag。pwn3用nc连接上之后,发现有几个选......
  • ctfshow-web入门-信息搜集(14)
    1.根据提示:有时候源码里面就能不经意间泄露重要(editor)的信息,默认配置害死人2.我们直接在url后面添加/editor,在flash上传空间里面找到文件空间,爆出了一堆目录3.最终我们在var/www/html/nothinghere/fl000g.txt这个路径找的到了flag,我们在url后面添加nothinghere/fl000g.......
  • ctfshow-web入门-信息搜集(16)
    1.根据题目提示:考察PHP探针php探针是用来探测空间、服务器运行状况和PHP信息用的,探针可以实时查看服务器硬盘资源、内存占用、网卡流量、系统负载、服务器时间等信息。url后缀名添加/tz.php版本是雅黑PHP探针,然后查看phpinfo搜索flag2.在url后面添加上/tz.php3.点击PHPIN......
  • ctfshow(29->32)--RCE/命令执行漏洞
    Web29源代码:error_reporting(0);if(isset($_GET['c'])){$c=$_GET['c'];if(!preg_match("/flag/i",$c)){eval($c);}}else{highlight_file(__FILE__);}代码审计:error_reporting(0)关闭所有php报错。preg_matc......
  • ShowMeAI-人工智能工具笔记-九-
    ShowMeAI人工智能工具笔记(九)T81-558|深度神经网络应用-全案例实操系列(2021最新·完整版)-P15:L2.4-在Pandas中为Keras使用Apply和Map-ShowMeAI-BV15f4y1w7b8嗨,我是Jeffine,欢迎来到华盛顿大学的深度神经网络应用课程。在这段视频中,我们将看看如何结合使用apply和......
  • ctfshow(78->81)--文件包含漏洞
    Web78源代码如下:if(isset($_GET['file'])){$file=$_GET['file'];include($file);}else{highlight_file(__FILE__);代码审计:使用include()进行文件包含,通过GET方法传递参数file获取被包含的文件。思路:利用data://伪协议,执行系统命令,获取flag......
  • 【CTF-SHOW】Web入门 Web27-身份证日期爆破 【关于bp intruder使用--详记录】
    1.点进去是一个登录系统,有录取名单和学籍信息发现通过姓名和身份证号可以进行录取查询,推测录取查询可能得到学生对应学号和密码,但是身份证号中的出生日期部分未知,所以可以进行爆破2.打开bp抓包这里注意抓的是学院录取查询系统发送POST类型进行查询的包,第一遍抓不到很正......
  • 见证 RTE 的新篇章丨 RTE 年度场景 Showcase 暨第四届 RTE 创新大赛开幕
       人工智能技术的快速发展,推动RTE行业持续进化,让实时互动场景变得更丰富、更有趣、更高效。2024年10月25日-26日,由声网和RTE开发者社区联合主办的RTE2024第十届实时互联网大会将在北京·悠唐皇冠假日酒店正式开启,大会将以“AI爱”为主题,推出覆盖实时互......