暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

华为GaussDB T 数据库故障排查步骤

原创 章芋文 2019-09-22
1663

在发生故障时,首先需要确认故障点是硬件、网络、操作系统还是数据库问题。不同故障恢复数据库服务的方法不一样。可以通过以下步骤判断故障原因。

通过SSH或者其他远程登录工具登录GaussDB 100所在服务器。


若操作系统发生内核错误Kernel panic(操作系统监测到内部的致命错误),则系统需经过较长时间(大约20分钟)才能重启。建议每过5分钟尝试连接一次,若20分钟后仍然不能连接成功,表明这台机器已故障无响应或网络连接有问题,需要联系管理员到现场进行检查处理。

以root用户,本地登录GaussDB 100所在服务器。

查看GaussDB 100服务是否启动。


ps ux | grep zengine

显示zengine状态为“open”、“mount”、“nomount”则表示数据库服务已经启动。

omm  14342  2.5  6.8 1059336 510404 ?      Sl   May21 104:44 /home/omm/app/bin/zengine open -D /home/omm/data


查看磁盘状况。


查看是否有未挂载的磁盘。

fdisk -l

查看磁盘空间是否不足。

df -h

请保证GaussDB 100所在的磁盘空间充足。

尝试写入文件,以确定磁盘是否正常。



排查操作系统问题

登录操作系统后,如果执行操作时响应缓慢,需检查系统运行情况后,进行进一步处理。执行的操作包括但不限于收集系统信息,确定系统版本、硬件、参数设置及登录用户情况。

系统资源不足(如CPU或I/O资源过载)引起的机器不响应外部连接。建议重试几次。若5分钟内仍不能操作这台机器,需管理员到现场进行检查处理。

登录成功系统反应慢,需收集以下系统信息:

当前在线用户。

--查看当前在线用户who

CPU使用状况。

确定是否因为某个进程导致CPU使用率过高。

top -H

I/O使用状况。

iostat -x 1 3
Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
xvda              0.01     1.10    0.07    1.01     0.83    10.25    20.40     0.03   24.88    4.04   26.36   1.38   0.15
xvde              0.00     0.39    0.13    1.62     3.47    33.83    42.78     0.03   18.01    4.94   19.05   1.21   0.21
dm-0              0.00     0.00    0.13    2.01     3.47    33.83    34.94     0.03   15.71    4.95   16.40   0.99   0.21

rrqm/s:每秒进行merge的读操作数目。即delta(rmerge)/s

wrqm/s:每秒进行merge的写操作数目。即delta(wmerge)/s

r/s:每秒完成的读I/O设备次数。即delta(rio)/s

w/s:每秒完成的写I/O设备次数。即delta(wio)/s

rKB/s:每秒读K字节数。是rsec/s的一半,因为每扇区大小为512字节

wKB/s:每秒写K字节数。是wsec/s的一半

avgrq-sz:平均每次设备I/O操作的数据大小(扇区)。即delta(rsect+wsect)/delta(rio+wio)

avgqu-sz:平均I/O队列长度。即delta(aveq)/s/1000(因为aveq的单位为毫秒)

await:平均每次设备I/O操作的等待时间(毫秒)。即delta(ruse+wuse)/delta(rio+wio)

svctm:平均每次设备I/O操作的服务时间(毫秒)。即delta(use)/delta(rio+wio)

%util:一秒中有百分之多少的时间用于I/O操作,或者说一秒中有多少时间I/O队列是非空的。即delta(usr)/s/1000(因为usr的单位为毫秒)

内存使用状况。

vmstat 1 3

操作系统情况。

“cat /etc/SuSE-release”检查SUSE系统版本。

“cat /etc/redhat-release”检查Red Hat系统版本。

“cat /etc/euleros-release”检查欧拉系统版本。

以root用户查看操作系统日志信息(/var/log/messages)或dmesg信息,检查是否操作系统发生过异常错误。

以root用户执行“sysctl -a”命令和“cat /etc/sysctl.conf”命令获得系统参数信息。

执行“uname -a”查询系统内核信息。

执行如下命令检查系统的版本。

“cat /proc/cpuinfo”和“cat /proc/meminfo”获得CPU和内存信息。



排查网络问题

通信网络层是数据库的基础组件,在数据库正常工作的情况下,网络层对上层用户是透明的,但数据库在长期运行时,可能会由于各种原因导致出现网络异常或错误。

netstat

如果网络正常,请尝试连接数据库。

单机连接失败,请根据报错信息检查zenith.ini文件的配置项是否正确。

连接数据库或执行查询时发生hang

处理办法:

以root用户,本地登录GaussDB 100所在服务器。

登录GaussDB 100数据库。


zsqlconn jack/database_123@192.168.0.1:1888

jack/database_123为登录数据库的用户名和密码,192.168.0.1为数据库所在的服务器IP地址,1888为连接的端口号。


通过如下SQL语句查询正在运行的SQL。


SELECT SID,SERIAL#, EVENT, PROGRAM, CLIENT_IP, (SYSDATE - SQL_EXEC_START)*86400, WAIT_SID, CURRENT_SQL,SQL_ID, MODULE FROM DV_SESSIONS WHERE STATUS = 'ACTIVE';

其中:


WAIT_SID表示阻塞会话ID,为空表示不阻塞。

(SYSDATE - SQL_EXEC_START)*86400表示该会话当前SQL已经执行的时间,单位:秒。

请根据具体情况处理。


如果确定该阻塞会话关闭后不影响数据库正常运行,执行如下命令,关闭该会话。

ALTER SYSTEM KILL SESSION 'SID,SERIAL#';

如果关闭该阻塞会话可能会影响数据库正常运行,建议联系华为技术支持确认是否可执行关闭会话操作。



排查数据库问题

数据库发生故障时,需要及时收集日志、视图、错误码和黑匣子(或core文件)的信息来分析问题产生的原因。

查看错误码信息

GaussDB 100提供了丰富的错误码显示机制。并期望通过不断丰富每条错误码的可能原因和处理办法,协助用户在遇到问题时可以快速和顺利地定位和解决问题。

错误码详细信息请参见《GaussDB 100 V300R001C00 错误码参考》。


通过日志定位故障

GaussDB 100在运行过程中,会产生大量用于数据库日常维护的运行、审计、DEBUG、告警等日志。在数据库发生故障时,可以使用这些日志进行问题定位和数据库恢复的操作。

具体日志记录内容,请参见《GaussDB 100 V300R001C00 用户指南(单机)》中“数据库系统管理 > > 管理日志 > 查看日志”章节。


运行日志

打印GaussDB 100数据库运行信息,如果数据库运行故障,请查看zengine.rlog。

日志目录:默认为“$GSDB_DATA/log/run/zengine.rlog”。


DEBUG日志

打印GaussDB 100数据库运行DEBUG级别信息,如果数据运行故障,且开启DEBUG级别日志,请查看zengine.dlog。

日志目录:默认为“$GSDB_DATA/log/debug/zengine.dlog”。


告警日志

打印GaussDB 100数据库运行告警信息。如需了解告警信息,请查看zenith_alarm.log。

日志目录:“$GSDB_DATA/log/zenith_alarm.log”。


zctl日志

打印使用zctl.py运维操作数据库的信息,zctl是日志为zctl-yyyy-mm-dd_xxx.log。如需获取GaussDB 100完整的运维信息,请查看zctl-yyyy-mm-dd_xxx.log和数据库启动输出信息zenithstatus.log。

日志目录:“$GSDB_DATA/log/zctl-yyyy-mm-dd_xxx.log”。


启动日志

记录数据库启动输出信息zenithstatus.log。如需获取GaussDB 100完整的运维信息,请查看zctl-yyyy-mm-dd_xxx.log和数据库启动输出信息zenithstatus.log。

日志目录:“$GSDB_DATA/log/zenithstatus.log”。


TRACE日志

记录数据库会话死锁的信息。如需查看会话死锁信息,请查看zengine_00003_xxxxxx.trc。

日志目录:“$GSDB_DATA/trc/zengine_00003_xxxxxx.trc”。


通过视图查看信息

GaussDB 100提供了丰富的视图,在定位故障时,可以根据实际情况查看相关视图。如,SQL长时间无响应时,可以查看视图DV_LOCKED_OBJECTS。


通过Core文件定位故障

GaussDB 100的相关进程在运行过程中可能会因为各种意外情况导致数据库崩溃(Coredump),而崩溃时产生的core文件对于迅速定位程序崩溃的原因及位置非常重要。如果进程运行时出现Coredump现象,建议立即开启core文件便于分析、定位故障。

操作系统自带Core dump机制。开启后,系统中所有出现Core dump问题时都会生成core文件,对操作系统带来性能和磁盘占用的影响。为了定位GaussDB 100 Coredump问题时不影响操作系统中其他程序,GaussDB 100支持操作系统不配置core机制时仍可产生core文件。

查看core文件位置命令如下所示:

cat /proc/sys/kernel/core_pattern

最后修改时间:2019-09-22 16:01:04
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论