云数据库 GaussDB 故障案例库-3(1)

举报
GaussDB 数据库 发表于 2025/12/05 17:17:26 2025/12/05
【摘要】 目  录1 CN组件状态Normal-告警原因分析2 CN故障-状态Down3 CN故障-状态Deleted4 CN故障-状态ReadOnly5 CN故障-启动失败6 DN组件状态Normal-告警原因分析7 DN故障-状态Down8 DN故障-状态Unknown9 DN故障-状态ReadOnly10 DN故障-状态Need repair11 DN故障-启动失败12 DN故障-多数派故障13...

 

1 CN组件状态Normal-告警原因分析

2 CN故障-状态Down

3 CN故障-状态Deleted

4 CN故障-状态ReadOnly

5 CN故障-启动失败

6 DN组件状态Normal-告警原因分析

7 DN故障-状态Down

8 DN故障-状态Unknown

9 DN故障-状态ReadOnly

10 DN故障-状态Need repair

11 DN故障-启动失败

12 DN故障-多数派故障

13 容灾搭建流程异常

14 灾备升主failover流程异常

15 计划内倒换switchover流程异常

16 容灾性能指标异常

17 容灾期间,节点替换后刷新集群信息

18 容灾期间,进行限制操作

19 CN剔除, 备无法连接,RPO增高处理

20 创建容灾、主从切换大数据场景等待超时

21 容灾期间,校验备份任务超时处理

22 容灾状态下升级

23 登录数据库管理面管理节点

24 登录 Service OM 平台

25 登录 DBS 运维管理平台

26 登录实例节点(8.2.1之前)

27 登录实例节点(8.2.1及之后)

28 查看任务流.

29 进沙箱.

30 实例监控(操作)


1、CN组件状态Normal-告警原因分析

  • 故障现象

查询集群状态,CN组件状态为Normal,历史产生CN服务异常告警。

  • 故障原因

可能原因有以下:

l   虚拟机重启产生CN服务异常告警。

l   CN进程异常重启产生CN服务异常告警。

l   主动重启CN产生CN服务异常告警。

  • 处理方法

                                步骤 1     登录告警的CN节点,切换至Ruby用户,查询集群状态。

su - Ruby

cm_ctl query -Cvd

11.jpg

如上图,集群状态正常,CN组件Normal

                                步骤 2     当前节点,执行以下命令,查看操作系统是否发生过重启。

who -b

12.png

如上图表示操作系统于2022-10-20 16:47发生过重启。

如发生过操作系统重启,说明CN告警是由于操作系统重启导致,确认非人为重启后,联系华为技术支持排查操作系统重启原因。

若未重启继续向下执行。

                                步骤 3     当前节点,执行以下命令,查看CN进程启动时间,确认告警时段内CN是否重启。

ps ux | grep cn | grep -v grep

13.png

如上图表示,CN进程在16:03启动。

l   如果没有重启,则联系华为技术支持进一步定位。

l   若发生过重启,确认告警时间段非人为主动重启,则继续执行。

                                步骤 4     进入当前节点的日志路径,查看是否有ffic_gaussdb-*.log日志文件生成。

ll $GAUSSLOG/ffic_log

vim ffic_gaussdb-1669881799.log

date -d @1669881799

14.png

如上图,16:03产生了ffic_gaussdb-1669881799.log日志。

142.png

143.png

上图表明,ffic_gaussdb-1669881799.log中的时间与进程重启时间一致。

l   如告警时间点有ffic_gaussdb-*.log日志,说明CN进程发生异常重启。

打开ffic日志文件,查看ffic_gaussdb-*.log中记录的时间是否与进程重启时间对应,若时间一致,则获取ffic_gaussdb-*.log文件后,联系华为技术支持。

l   若以上时间不一致或者没有此日志,则继续向下执行。

                                步骤 5     查看当前CN节点的cm_agent日志。

打开对应时间点的cm_agent-***.log日志,如对应时间点的日志已被压缩,则查看对应的cm_agent-****.log.gz日志。

cd $GAUSSLOG/cm/cm_agent

vim cm_agent-*.log

15.png

                                步骤 6     cm_agent日志中搜索关键词:restart msg

16.png

l   如告警时间点存在此日志信息,则说明是由cm_server下发重启命令给cm_agent重启CN,详细原因,可继续在此条日志继续向上查看。

l   若不存在,继续向下执行。

                                步骤 7     当前节点查询集群状态,获取CMS主节点,并登录到CMS主节点。

cm_ctl query -Cvd

17.png

如上图,ecs-gaussdb-0003CMS主节点。

                                步骤 8     查看cm_server日志,打开对应时间点的cm_server-***.log日志。

cd $GAUSSLOG/cm/cm_server

vim cm_server-*.log

如对应时间点的日志已被压缩,则查看对应的cm_server-****.log.gz日志。

                                步骤 9     cm_server日志中搜索关键词:send restart message

19.png

l   如果存在,则说明是由cm_server主动重启CN

l   若不存在,则联系华为技术支持。

                             步骤 10     若以上均不涉及,联系华为技术支持。

----结束


2、CN故障-状态Down

  • 故障现象

查询集群状态,CN组件状态为Down,产生CN服务异常告警。

  • 故障原因

可能原因有以下:

l   虚拟机故障产生CN服务异常告警。

l   磁盘故障导致CN组件Down,产生CN服务异常告警。

l   网卡故障导致CN组件Down,产生CN服务异常告警。

l   端口冲突导致CN组件Down,产生CN服务异常告警。

l   主动停止CN组件,产生CN服务异常告警。

  • 处理方法

                                步骤 1     登录故障的CN节点,切换至Ruby用户,查询集群状态。

su - Ruby

cm_ctl query -Cvd

21.png

如上图,集群状态DegradedCN组件Down

l   若故障节点无法登录,则说明操作系统故障或网络等故障无法连接,需排查节点无法连接原因。

l   若可正常连接,继续向下执行。

                                步骤 2     当前节点,执行以下命令,查看操作系统是否发生过重启:

who -b

22.png

如上图表示操作系统于2022-10-20 16:47发生过重启。

l   如发生过操作系统重启,若非人为主动重启,需联系华为技术支持排查操作系统重启原因。

l   继续向下执行。

                                步骤 3     当前节点,执行以下命令,查看CN进程启动是否存在以及重启时间。

ps ux | grep cn | grep -v grep

23.png

如上图表示,CN进程在16:03启动。

l   如果进程存在,1min后再次查询集群状态,CN会恢复为Normal或者Deleted,若无变化,则联系华为技术支持进一步定位,若进程不断重启,则参考5 CN故障-启动失败章节定位。

l   若进程不存在,则继续步骤4

                                步骤 4     当前节点,查看cm_agent日志,打开对应时间点的cm_agent-***.log日志。

如对应时间点的日志已被压缩,则查看对应的cm_agent-****.log.gz日志。

cd $GAUSSLOG/cm/cm_agent

vim cm_agent-*.log;

24.png

                                步骤 5     cm_agent日志中搜索关键词g_cnDiskDamage=1

l   若存在,则原因为数据/日志磁盘损坏或磁盘满,参考步骤10

l   若不存在,继续步骤6

25.png

说明:

1.4(V005R001C20)版本及以前版本,搜索cn_disk_damage=1关键词,1.4(V005R001C20)以后版本搜索g_cnDiskDamage=1关键词。

                                步骤 6     cm_agent日志中搜索关键词port_conflict=1

l   若存在,则原因为端口冲突,参考步骤11

l   若不存在,继续步骤7

26.png

                                步骤 7     cm_agent日志中搜索关键词g_cnNicDown=1

l   若存在,则原因为网卡故障,参考步骤12

l   若不存在,继续步骤8

27.png

说明:

1.4(V005R001C20)版本及以前版本,搜索cn_nic_Down=1关键词,1.4(V005R001C20)以后版本搜索g_cnNicDown=1关键词。

                                步骤 8     cm_agent日志中搜索关键词cn_manual_stop=1

l   若存在,则原因为手动停止,参考步骤13

l   若不存在,则联系华为技术支持。

28.png

                                步骤 9     查看对应故障CN的磁盘是否有故障,数据目录是否存在以及权限是否正确,如无故障则检查是否磁盘满。

                             步骤 10     查看端口占用进程。

lsof -i:端口号

210.png

找到进程后重启进程。

kill -9 pid

须知:kill -9 pid为高危操作,执行前需联系华为技术支持确认。

                             步骤 11     联系技术支持排查是否存在网卡故障。

                             步骤 12     查看是否有人手动停止,如非人为停止,则需要继续排查CMS日志,同时联系华为技术支持。

----结束


3、CN故障-状态Deleted

  • 故障现象

查询集群状态,CN组件状态为Deleted,产生CN服务异常告警。

  • 故障原因

可能原因有以下:

l   虚拟机重启,断网等故障导致CN被剔除,产生CN服务异常告警。

l   CN与主DN断连导致CN被剔除,产生CN服务异常告警。

l   CN组件Down导致CN被剔除,产生CN服务异常告警。

l   CN组件频繁重启导致CN被剔除,产生CN服务异常告警。

l   CN组件被主动剔除,产生CN服务异常告警。

  • 处理方法

                                步骤 1     登录故障的CN节点,切换至Ruby用户,查询集群状态。

su - Ruby

cm_ctl query -Cvd

31.png

如上图,集群状态为Degradedcn_5001被剔除,状态为Deleted

                                步骤 2     当前节点,执行以下命令,查看操作系统是否发生过重启。

who -b

32.png

如上图表示操作系统于2022-10-20 16:47发生过重启。

l   如发生过操作系统重启,若非人为主动重启,需联系华为技术支持排查操作系统重启原因,故障处理后执行节点修复加回被剔除的CN

l   继续步骤3

                                步骤 3     确认主机是否发生断网等。

如有断网发生,排查断网原因,故障处理后执行节点修复加回被剔除的CN,如不涉及,继续步骤4

                                步骤 4     登录到CMS主节点,查看cm_server日志。

可通过查询集群状态获取CMS主节点:

cm_ctl query -Cvd

34.png

如上图,ecs-gaussdb-0003CMS主节点。

执行如下命令,查看日志:

cd $GAUSSLOG/cm/cm_server

                                步骤 5     查看对应时间点的cm_server-***.log日志。

vim cm_server-*.log

如对应时间点的日志已被压缩,则查看对应的cm_server-****.log.gz日志。

                                步骤 6     cm_server日志中搜索有关键词cn_down_to_delete=1

36.png

l   如对应时间点存在该信息,则原因为CN组件Down 导致,参考2 CN故障-状态Down排查详细原因,确认原因及故障解决之后,执行节点修复加回被剔除的CN

l   如不涉及继续步骤7

                                步骤 7     cm_server日志中搜索有关键词:isCnDnDisconnected=1

l   如对应时间点存在该信息,则原因为CN组件与主DN断连导致,此时需要排查CN与主DN之间的网络,待网络恢复后,执行节点修复加回被剔除的CN

l   如不涉及继续步骤8

                                步骤 8     cm_server日志中搜索有关键词:cmd_disable_cn=1

37.png

l   如对应时间点存在该信息,则原因为CN组件被主动剔除,确认剔除原因后,后执行节点修复加回被剔除的CN

l   如不涉及继续步骤9

                                步骤 9     cm_server日志中搜索有关键词cn instance restarts within ten minutes is more than

39.png

l   如对应时间点存在此信息,则原因为CN组件频繁重启导致,出现此种情况,参考1 CN组件状态Normal-告警原因分析进一步定位,故障处理后执行节点修复加回被剔除的CN

l   若不存在,继续步骤10

                             步骤 10     若以上均不涉及,则联系华为技术支持。

----结束


4、CN故障-状态ReadOnly

  • 故障现象

查询集群状态,CN组件状态为ReadOnly状态,产生CN服务异常告警。

  • 故障原因

可能原因有以下:

CN数据目录被占满。

  • 处理方法

                                步骤 1     登录任意节点,查询集群状态。

su - Ruby

cm_ctl query -Cvd

41.png

如上图,集群状态为Degradedcn_5001组件只读,状态为ReadOnly。因为多个CN之间对等,故CN只读只针对当前CN节点,因此可确定只读的CN节点。

                                步骤 2     登录只读的CN节点,查询磁盘使用情况。

df -h

42.png

如上图,CN所在目录的磁盘使用率为86%,超过默认85%的只读阈值。确认磁盘使用超过阈值之后,继续步骤3

                                步骤 3     进入当前节点的CMS数据目录,查看修改磁盘检测参数值。

1.         CMS数据目录可通过查询集群状态获取。

cm_ctl query -Cvd

431.png

如上图,/opt/gaussdb/engine/cm/cm_server CMS的数据目录。

2.         查询磁盘阈值。

cd /data/gaussdb/engine/cm/cm_server

grep 'datastorage_threshold_value_check' cm_server.conf

432.png

如上图,datastorage_threshold_value_check=85

                                步骤 4     确认只读的CN节点以及参数阈值后,首先需要通过修改datastorage_threshold_value_check参数阈值,第一时间恢复业务。

gs_guc reload -Z cmserver -N all -I all -c "datastorage_threshold_value_check = 90"

须知:

HCS场景执行gs_guc命令需要进入沙箱。

修改参数为高危操作,执行前需联系华为技术支持确认。

datastorage_threshold_value_check参数修改后的值需大于当前磁盘使用率,且该参数值不可设置过大,建议不超过90

                                步骤 5     由于集群检测磁盘的周期默认为600s,若想要即可生效,可执行以下命令取消CN只读。

gs_guc reload -Z coordinator -N nodename -D dataPath -c 'default_transaction_read_only = off'

45.png

说明:

l  HCS场景执行gs_guc命令需要进入沙箱。

l  nodename为当前节点的hostname,可通过cm_ctl query -Cvd查询获取。

l  dataPath为当前CN的数据目录,可通过cm_ctl query -Cvd查询获取。

                                步骤 6     进入到只读CN节点排查导致CN目录被占满的原因。

du - sh *

l   如因数据量增长导致,则执行CN扩容或者扩磁盘。

l   如因人为上传的超大文件导致,需删除超大文件。

                                步骤 7     CN目录磁盘使用率恢复正常值以后,恢复datastorage_threshold_value_check参数值为85

gs_guc reload -Z cmserver -N all -I all -c "datastorage_threshold_value_check = 85"

说明:

HCS场景执行gs_guc命令需要进入沙箱。

                                步骤 8     若以上均不涉及,联系华为技术支持。

----结束


5、CN故障-启动失败

  • 故障现象

启动集群时或者单独启动CN时,CN组件启动失败。

  • 故障原因

可能原因有以下:

l   连接认证配置错误。

l   CN目录权限错误或者磁盘故障。

l   CN组件参数配置错误。

  • 处理方法

                                步骤 1     登录启动失败的CN节点,执行以下命令,查询集群状态。

su - Ruby

cm_ctl query -Cvd

51.png

如上图,CN组件启动失败,查询状态为Down

512.png

如上图,CN组件启动失败,查询状态为Unknown

                                步骤 2     查看当前CN节点的cm_agent日志,打开对应时间点的cm_agent-***.log日志,搜索关键词ERRORFATAL

如对应时间点的日志已被压缩,则查看对应的cm_agent-****.log.gz日志,

cd $GAUSSLOG/cm/cm_agent

vim cm_agent-*.log

52.png

如上图,CN进程是运行的,但是连接失败。

l   若详细报错信息为:Invalid username/password,login denied,表明CN进程已启动,但是无法连接CMSDN,此问题由于连接认证配置错误,需查看pg_hba.conf配置文件,此配置文件在CN数据目录下,CN数据目录可通过cm_ctl query -Cvd查询获取。

cm_ctl query -Cvd

522.png

如上图,/data/gaussdb/engine/cnCN数据目录路径。

cd /data/gaussdb/engine/cn

vim pg_hba.conf

523.png

如上图,127.0.0.1应配置为trust认证。

说明:

/data/gaussdb/engine/cn为示例路径,需根据实际情况修改。

l   若以上都不涉及,继续步骤3

须知:修改参数为高危操作,执行前需联系华为技术支持确认。

                                步骤 3     继续查看cm_agent-***.log日志,查看StartAndStop日志。

l   若详细报错信息为:g_cnDiskDamage=1,表明磁盘故障,CN无法启动,可排查CN数据目录磁盘是否正常,目录是否存在等,是否的正常读写等。

l   若以上都不涉及,继续步骤4

53.png

如上图,无法向CN目录写数据,报错磁盘故障。

说明:

1.4(V005R001C20)版本及以前版本,搜索cn_disk_damage=1关键词,1.4(V005R001C20)以后版本搜索g_cnDiskDamage=1关键词。

                                步骤 4     继续查看当前目录下的system_call-current.log日志,搜索FATAL关键词。

l   若报错详细信息为:Permissions should be u=rwx(0700),表明数据目录权限错误,可进入CN数据目录,修改权限为700

l   若以上都不涉及,继续步骤5

54.png

如上图,是由于CN目录的权限错误,导致CN无法启动。

修改权限命令为:chmod -R 700 /opt/gaussdb/engine/data/cn

须知:修改数据目录权限为高危操作,执行前需联系华为技术支持确认。

/opt/gaussdb/engine/data/cn为启动失败CN的数据目录。

                                步骤 5     继续查看当前目录下的system_call-current.log日志,搜索FATAL关键词。

l   若报错详细信息为:outside the valid range for parameter,则表明配置文件中的参数设置错误,可根据报错的参数,修改为正确的取值范围。

l   若以上都不涉及,则继续步骤6

55.png

如上图,是由于cn_5001recovery_time_target参数配置错误,导致CN启动失败。

gs_guc reload -Z coordinator -N all -I all -c "recovery_time_target=60"

说明:

l  HCS场景执行gs_guc命令需要进入沙箱。

l  recovery_time_target参数为示例,实际需根据报错信息中的参数修改。

须知:修改参数为高危操作,执行前需联系华为技术支持确认。

                                步骤 6     继续查看cm_agent-***.log以及system_call-current.log日志,获取错误信息,联系华为技术支持。

----结束


6、DN组件状态Normal-告警原因分析

  • 故障现象

查询集群状态,DN组件状态为Normal,历史产生DN服务异常告警。

  • 故障原因

可能原因有以下:

l   虚拟机重启产生DN服务异常告警。

l   DN进程重启产生DN服务异常告警。

l   主动重启DN产生DN服务异常告警。

  • 处理方法

                                步骤 1     登录告警的DN节点,切换至Ruby用户,查询集群状态。

su - Ruby

cm_ctl query -Cvd

61.png

如上图,集群状态NormalDN组件状态Normal

                                步骤 2     当前节点,执行以下命令,查看操作系统是否发生过重启。

who -b

62.png

如上图表示操作系统于2022-10-20 16:47发生过重启。

l   如发生过操作系统重启,说明DN告警是由于操作系统重启导致,确认非人为重启后,联系华为技术支持排查操作系统重启原因。

l   若未重启继续步骤3

                                步骤 3     当前节点执行以下命令查看DN进程启动时间,确认告警时段内DN是否重启。

l   如果没有重启,则联系华为技术支持进一步定位。

l   若发生过重启,确认告警时间段非人为主动重启,则继续步骤4

ps ux|grep 'gaussdb --datanode' | grep -v grep

63.png

如上图,DN进程的启动时间为22:19

                                步骤 4     进入当前节点的日志路径,查看是否有ffic_gaussdb-*.log日志文件生成。

l   如告警时间点有ffic_gaussdb-*.log日志,说明DN进程发生异常重启。

打开ffic日志文件,查看ffic_gaussdb-*.log中记录的时间是否与进程重启时间对应,若时间一致,则获取ffic_gaussdb-*.log文件,联系华为技术支持。

l   若时间不一致或者没有此日志,则继续步骤5

ll $GAUSSLOG/ffic_log

vim ffic_gaussdb-1669904333.log

date -d @1669904333

64.png

如上图,22:18产生了ffic_gaussdb-1669904333.log日志。

642.png

643.png

上图表明,ffic_gaussdb-1669904333.log中的时间与进程重启时间一致。

                                步骤 5     当前节点查看cm_agent日志,打开对应时间点的cm_agent-***.log日志。

如对应时间点的日志已被压缩,则查看对应的cm_agent-****.log.gz日志。

cd $GAUSSLOG/cm/cm_agent

vim cm_agent-*.log

                                步骤 6     cm_agent日志中搜索如下关键字restart msg from cm_server

l   如告警时间点存在此日志信息,则说明是由cm_server发送重启命令给cm_agent重启DN,详细原因,可继续在此条日志继续向上查看。

l   若不存在,继续步骤7

66.png

                                步骤 7     当前节点查询获取CMS主节点,并登录到CMS主节点,查看cm_server日志。

su - Ruby

cm_ctl query -Cvd

67.png

如上图,ecs-gaussdb-0003CMS主节点。

cd $GAUSSLOG/cm/cm_server

                                步骤 8     查看cm_server日志,打开对应时间点的cm_server-***.log日志。

如对应时间点的日志已被压缩,则查看对应的cm_server-****.log.gz日志。

cd $GAUSSLOG/cm/cm_server

vim cm_server-*.log

                                步骤 9     cm_server日志中搜索关键词send restart message

l   如果存在,则说明是由cm_server主动重启DN

l   若不存在,则联系华为技术支持。

69.png

                             步骤 10     若以上均不涉及,联系华为技术支持。

----结束


7、DN故障-状态Down

  • 故障现象

查询集群状态,DN组件状态为Down,产生DN服务异常告警。

  • 故障原因

可能原因有以下:

l   虚拟机故障产生DN服务异常告警。

l   磁盘故障导致DN组件Down,产生DN服务异常告警。

l   网卡故障导致DN组件Down,产生DN服务异常告警。

l   端口冲突导致DN组件Down,产生DN服务异常告警。

l   主动停止DN组件,产生DN服务异常告警。

  • 处理方法

                                步骤 1     登录故障DN节点,切换至Ruby用户,查询集群状态。

l   若故障节点无法登录,则说明操作系统故障或网络等故障无法连接,需排查节点无法连接原因。

l   若可正常连接,继续步骤2

su - Ruby

cm_ctl query -Cvd

71.png

上图中dn_6001状态为Down

                                步骤 2     当前节点,执行以下命令,查看操作系统是否发生过重启。

l   如发生过操作系统重启,若非人为主动重启,需联系华为技术支持排查操作系统重启原因。

l   若未重启,继续步骤3

who -b

72.png

上图表明,操作系统于2022-10-20 16:47发生过重启。

                                步骤 3     在当前节点,查看DN进程是否存在以及进程重启时间:

l   如进程存在,则等1min后查询集群状态,DN状态会自动恢复,如未恢复,联系华为技术支持,若进程不断重启,则参考5 CN故障-启动失败章节排查。

l   如进程不存在,则继续步骤4

ps ux | grep 'gaussdb --datanode'|grep -v grep

73.png

上图表明,dn_6001进程正常,且在16:58分启动。

                                步骤 4     查看故障DN节点的cm_agent日志,打开对应时间点的cm_agent-***.log日志。

如对应时间点的日志已被压缩,则查看对应的cm_agent-****.log.gz日志。

cd $GAUSSLOG/cm/cm_agent

vim cm_agent-*.log

                                步骤 5     cm_agent日志中搜索关键词g_dnDiskDamage=1

l   若存在,则原因为数据/日志磁盘损坏或磁盘满,需要查看对应故障DN的磁盘是否有故障,如无故障则检查是否磁盘满或者数据目录是否被删除,是否被重命名以及目录读写权限是否都正确。

l   如以上都不涉及,则继续步骤6

75.png

如上图,dn_6001 dn_disk_damage=1

说明:

1.4(V005R001C20)版本及以前版本,搜索dn_disk_damage=1关键词,1.4(V005R001C20)以后版本搜索g_dnDiskDamage=1关键词。

                                步骤 6     cm_agent日志中搜索关键词port_conflict=1

l   若存在,则原因为端口冲突,参考步骤9

l   若以上都不涉及则继续步骤7

76.png

如上图,dn_6003 port_conflict=1

                                步骤 7     cm_agent日志中搜索关键词g_nicDown=1

l   若存在,则原因为网卡故障,参考步骤10

l   若以上都不涉及则继续步骤8

77.png

如上图,dn_6006 g_nicDown=1

说明:

1.4(V005R001C20)版本及以前版本,搜索dn_nic_Down=1关键词,1.4(V005R001C20)以后版本搜索g_nicDown=1关键词。

                                步骤 8     cm_agent日志中搜索关键词dn_manual_stop=1

l   若存在,则原因为主动停止,参考处步骤11

l   若不存在,则联系华为技术支持。

78.png

如上图表明,dn_6001 dn_manual_stop=1

                                步骤 9     查看端口占用进程。

lsof -i:端口号

79.png

找到进程后,强制结束进程。

kill -9 pid

须知:kill -9 pid为高危操作,执行前需联系华为技术支持确认。

                             步骤 10     联系华为技术支持,排查否存在网卡故障。

                             步骤 11     确认是否有人手动停止,如非人为停止,则联系华为技术支持,排查cms日志。

----结束


8、DN故障-状态Unknown

  • 故障现象

查询集群状态,DN组件状态为Unknown,产生DN服务异常告警。

  • 故障原因

可能原因有以下:

cm_agent无法连接DN

  • 处理方法

                                步骤 1     登录故障DN节点,切换至Ruby用户,查询集群状态。

su - Ruby

cm_ctl query -Cvd

81.png

如上图,dn_6008状态为Unknown

                                步骤 2     DN长时间处于Unknown状态,如需要快速恢复,则可使用以下命令处理,如需要先定位则跳过此步骤。

1.         查询故障DNPID

ps ux | grep dn_6008 | grep -v grep

dn_6008为示例,实际执行时需要更换为当前故障的DN

2.         重启DN进程。

kill -9 pid

pid为当前Unknown状态DN的进程的pid

须知:kill -9为高危操作,执行前需联系华为技术支持确认。

                                步骤 3     查看当前节点的cm_agent日志,打开对应时间点的cm_agent-***.log日志。

如对应时间点的日志已被压缩,则查看对应的cm_agent-****.log.gz日志。

cd $GAUSSLOG/cm/cm_agent

vim cm_agent-*.log

                                步骤 4     cm_agent日志中搜索关键词1 timeout expired

l   如存在,表明cm_agent连接不到DN,继续步骤5

l   如不存在,则联系华为技术支持。

84.png

                                步骤 5     当前节点执行以下命令,获取故障DN的堆栈信息,并联系华为技术支持。

gs_ctl stack -D datapath > /home/omm/dn_6008_stack.log

85.png

说明:

l  2.1(V500R002C10)以后版本,可使用gs_stack命令将堆栈信息重定向到指定文件。

l  datapath为当前DN的数据目录,可通过cm_ctl query -Cvd获取。

l  HCS场景,执行gs_stack需要进入沙箱。

                                步骤 6     若以上都不涉及,联系华为技术支持。

----结束


9、DN故障-状态ReadOnly

  • 故障现象

查询集群状态,DN组件状态为ReadOnly,产生DN服务异常告警

  • 故障原因

可能原因有以下:

DN数据目录磁盘使用超过阈值。

  • 处理方法

                                步骤 1     登录任一节点,查询集群状态。

su - Ruby

cm_ctl query -Cvd

91.png

如上图,DN组件全部ReadOnly

                                步骤 2     当前DN节点,查看磁盘空间分配情况,查看各DN节点DN数据目录所在磁盘空间使用率。

gs_ssh -c "df -h"

92.png

如上图为集群内所有节点的磁盘使用情况。

说明:

HCS场景,执行gs_ssh命令需要进入沙箱。

                                步骤 3     进入当前节点的CMS数据目录,查看修改磁盘检测参数值。

CMS数据目录可通过查询集群状态获取。

cm_ctl query -Cvd

93.png

如上图,/opt/gaussdb/engine/cm/cm_server CMS的数据目录。

cd /data/gaussdb/engine/cm/cm_server

grep 'datastorage_threshold_value_check' cm_server.conf

932.png

如上图,datastorage_threshold_value_check=85

说明:

HCS场景,执行gs_ssh命令需要进入沙箱,或者数据目录前加/var/chroot

                                步骤 4     确认磁盘使用率超过阈值的DN节点后,首先需要通过修改datastorage_threshold_value_check参数阈值,第一时间恢复业务。

gs_guc reload -Z cmserver -N all -I all -c "datastorage_threshold_value_check = 90"

须知:

l  HCS场景,执行gs_ssh命令需要进入沙箱。

l  修改参数为高危操作,执行前需联系华为技术支持确认。

l  datastorage_threshold_value_check参数修改后的值需大于当前磁盘使用率,且该参数值不可设置过大,建议不超过90

                                步骤 5     由于集群检测磁盘的周期默认为600s,若想要即可生效,可执行以下命令取消DN只读。

gs_guc reload -Z datanode -N nodename -D dataPath -c 'default_transaction_read_only=off'

95.png

说明:

l  HCS场景,执行gs_ssh命令需要进入沙箱。

l  nodename为当前节点的hostname,可通过cm_ctl query -Cvd查询获取。

l  dataPath为当前CN的数据目录,可通过cm_ctl query -Cvd查询获取。

                                步骤 6     进入到只读DN节点排查导致DN目录被占满的原因。

du - sh *

l   如因数据量增长导致,则执行DN扩容或者扩磁盘。

l   如因人为上传的超大文件导致,需删除超大文件。

                                步骤 7     DN目录磁盘使用率恢复正常值以后,恢复datastorage_threshold_value_check参数值为85

gs_guc reload -Z cmserver -N all -I all -c "datastorage_threshold_value_check = 85"

说明:

HCS场景,执行gs_ssh命令需要进入沙箱。

                                步骤 8     若以上均不涉及,联系华为技术支持。

----结束


10、DN故障-状态Need repair

  • 故障现象

查询集群状态,DN组件状态为Need repair,产生DN服务异常告警。

  • 故障原因

可能原因有以下:

l   DN故障,备DNredo过程中无法接收主机日志,出现Need repair状态。

l   网络异常,备DN无法与主DN正常连接,出现Need repair状态。

l   DN进程故障重启,出现Need repair状态。

  • 处理方法

                                步骤 1     登录故障DN节点,切换至Ruby用户,查询集群状态,确认分片是否满足多数派。

su - Ruby

cm_ctl query -Cvd

101.png

如上图,第一个DN分片不满足多数派。

l   查询集群状态,分片内无主,不满足多数派,联系华为技术支持。

l   查询集群状态,分片有主,分片内主+DN数量小于分片内DN总数的一半,不满足多数派,参考12 DN故障-多数派故障章节处理。

l   查询集群状态,分片有主,分片内主+DN数量大于分片内DN总数的一半,继续步骤2

                                步骤 2     登录Need repair状态备DN节点,排查备DN进程是否重启。

ps ux | grep 'gaussdb --datanode'|grep -v grep

102.png

上图表明,dn_6008进程在10:30分启动。

l   若有过重启,参考6 DN组件状态Normal-告警原因分析章节,排查DN重启原因。

l   若无重启,继续步骤3

                                步骤 3     当前节点查看DN日志,搜索terminating walreceiver due to heartbeat timeout关键词。

如能搜索到对应时间点的日志,表明备DN与主DN发生过断连,继续步骤4

cd $GAUSSLOG/pg_log

grep 'terminating walreceiver due to heartbeat timeout' *

103.png

如上图,表明备DN无法正常接收主DN的日志。

                                步骤 4     登录当前分片的主DN节点,排查主DN 进程是否有重启。

ps ux | grep dn|grep -v grep

104.png

上图表明,dn_6008进程在10:30分启动。

l   若有过重启,参考6 DN组件状态Normal-告警原因分析章节,排查DN重启原因。

l   若无重启,继续步骤5

                                步骤 5     排查当前DN分片是否有主备切换,可在新主DNcm_agent日志中搜索关键词failover msg from cm_server

l   若存在,表明是由cm_server仲裁主备切换。

l   若不存在,继续步骤6

105.png

                                步骤 6     确认主DN节点和备DN节点之间网络是否正常,可分别在主备DN节点执行ping命令,注意需使用主备节点对等的IP

ping -I 出口IP 目的IP

说明:

IP通过cm_ctl query -Cvd查询获取,HCS及公有云环境也可通过DBS运维管理平台实例明细界面获取。

                                步骤 7     若以上均不涉及,联系华为技术支持。

----结束

因篇幅原因,前10小节在此处,更多内容请移步:云数据库 GaussDB 故障案例库-3(2)

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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