首页 > 其他分享 >南大通用GBase 8c扩缩容失败故障定位方法

南大通用GBase 8c扩缩容失败故障定位方法

时间:2024-09-18 13:55:16浏览次数:13  
标签:gs 8c 扩缩容 gbase dn4 gha 0.84 100.0 GBase

南大通用GBase 8c是一款多模多态分布式数据库,可进行横向水平的扩张和缩减,即支持扩容和缩容操作。本文介绍当扩缩容故障时如何进行问题定位。

正常来讲,使用自带的gha_ctl工具进行扩缩容正常会分输出两个success。第一个success是检查输入参数是否正确,数据目录是否非空。在这一步失败的话,可以修改参数,再次尝试。第二个success表示启动子进程,执行扩容/缩容,这一步是比较花时间的。

1、原理介绍

(1)扩容

执行扩容是分下面几个阶段,通过gha_ctl get expand history -l $dcslist 命令的输出结果中phase可以知道是在那个阶段失败。

add_primary > prepare > execute > add_standby > clean_data

  • add_primary阶段是dn节点的初始化,添加dn主机。
  • prepare阶段是检查需要扩容的node group, 创建目标node group,设置扩容的源node group和目标node group。
  • execute阶段是执行gs_redis工具进行数据重分布。
  • add_standy阶段添加dn备机的过程。
  • clean_data阶段是更改扩容状态到end。

(2)缩容

缩容在第二步骤也分几个阶段, 通过gha_ctl get expand history -l $dcslist 命令的输出结果中phase可以知道是在那个阶段失败。缩容是不需要添加节点的,只会删除节点。

prepare > execute > drop_group > clean_data

  • prepare阶段是检查需要缩容的node group, 创建目标node group,设置缩容的源node group和目标node group。
  • execute阶段是执行gs_redis工具进行数据重分布。
  • drop_group阶段是擅长缩容的datanode组。
  • clean_data阶段是更改扩容状态到end。

2、故障概述及案例

在add_primary/add_standy/prepare阶段失败时,在gha_server(多个gha_server时,在主gha_server上)上查看/var/log/messages和/tmp/gha_ctl/gha_ctl.log,以及在添加的dn节点上的日志目录$GAUSSLOG/gbase/om中查看gs_expansion***的日志。

execute阶段失败的话,一般报错消息会显示”gs_redis failed on ...”,此时需要查看gs_redis工具的日志。

gs_redis日志在某个CN的$GAUSSLOG/bin/gs_redis目录下。gs_redis日志日志详细记录了失败的原因,然后可在cn的pg_log目录下查看失败原因。

(1)故障定位案例1

现象如下所示:

[gbase@gbase8c-82 script]$ ./gha_ctl expand datanode 'dn4 (dn4_1 100.0.0.84 30010 /home/gbase/data/dn4/dn4_1 8020)' -l http://100.0.0.82:2379,http://100.0.0.83:2379,http://100.0.0.84:2379 -u 40ac7d83-6be3-486c-83c4-8942a16d3590
{
"ret":0,
"msg":"Success"
}
[gbase@gbase8c-82 script]$ {
"ret":-1,
"msg":"Init fail"
}

定位步骤:

首先查看一下是在哪个步骤失败:

[gbase@gbase8c-82 script]$ ./gha_ctl get expand history -l http://100.0.0.82:2379,http://100.0.0.83:2379,http://100.0.0.84:2379
{
"state":"idle",
"current":"",
"history":[
{
"time":"2022-12-29 10:27:59",
"uuid":"40ac7d83-6be3-486c-83c4-8942a16d3590",
"phase":"add_primary",
"status":"failed",
"info":{
"dn4":[
{
"name":"dn4_1",
"host":"100.0.0.84",
"port":"30010",
"work_dir":"/home/gbase/data/dn4/dn4_1",
"agent_port":"8020",
"role":"primary",
"agent_host":"100.0.0.84"
}
]
}
}
]
}

发现是在加节点时失败,检查一下84节点上的gs_expansion***日志,发现没有错误。

然后在gha_server上查看/tmp/gha_ctl/gha_ctl.log文件。

2022-12-29 10:28:04 gaussdb.py expansion 89 DEBUG 345309 Execute expansion command in [100.0.0.84]: source ~/.bashrc;gs_expansion -U gbase -G gbase -X /tmp/gs_gha_2022-12-29_10:28:02_796027/clusterconfig.xml -h 100.0.0.84 --from-gha --inst-name dn4_1 --group-name dn4
2022-12-29 10:28:08 command_util.py execute 249 DEBUG 345309 cmd:ssh -E /dev/null -p 22 [email protected] "source ~/.bashrc;gs_expansion -U gbase -G gbase -X /tmp/gs_gha_2022-12-29_10:28:02_796027/clusterconfig.xml -h 100.0.0.84 --from-gha --inst-name dn4_1 --group-name dn4", status:1, output:[GAUSS-51100] : Failed to verify SSH trust on these nodes:
gbase8c-82, gbase8c-83, gbase8c-84, 100.0.0.82, 100.0.0.83, 100.0.0.84 by individual user.
2022-12-29 10:28:08 instance.py init 1614 INFO 345309 Node dn4_1 init error:Failed to execute the command: source ~/.bashrc;gs_expansion -U gbase -G gbase -X /tmp/gs_gha_2022-12-29_10:28:02_796027/clusterconfig.xml -h 100.0.0.84 --from-gha --inst-name dn4_1 --group-name dn4. Error:
Run cmd failed:cmd[ssh -E /dev/null -p 22 [email protected] "source ~/.bashrc;gs_expansion -U gbase -G gbase -X /tmp/gs_gha_2022-12-29_10:28:02_796027/clusterconfig.xml -h 100.0.0.84 --from-gha --inst-name dn4_1 --group-name dn4"], msg[[GAUSS-51100] : Failed to verify SSH trust on these nodes:
gbase8c-82, gbase8c-83, gbase8c-84, 100.0.0.82, 100.0.0.83, 100.0.0.84 by individual user.]
2022-12-29 10:28:08 common.py add_one_node 190 ERROR 345309 init one node dn4_1 failed, code: -1, response: Init fail

我们看到是ssh没有配置互信,测试一下,发现84节点没有配置到其他节点的ssh互信。

解决方法:

配置互信后可以再次尝试扩容。

(2)故障定位案例2

现象:

[gbase@gbase8c-82 script]$ ./gha_ctl expand datanode 'dn4 (dn4_1 100.0.0.84 30010 /home/gbase/data/dn4/dn4_1 8020)' -l http://100.0.0.82:2379,http://100.0.0.83:2379,http://100.0.0.84:2379 -u 40ac7d83-6be3-486c-83c4-8942a16d3590
{
"ret":0,
"msg":"Success"
}
[gbase@gbase8c-82 script]$ {
"ret":-1,
"msg":"gs_redis on cn1 failed"
}

定位步骤:

从错误内容看,是执行gs_redis的时候失败了,然后我们去cn1的$GAUSSLOG/bin/gs_redis下查看gs_redis日志。

tid[392445]: INFO: redistributing database "postgres"
tid[392445]: INFO: lock schema postgres.public
INFO: please do not close this session until you are done adding the new node
CONTEXT: referenced column: pgxc_lock_for_transfer
tid[392445]: INFO: redistributing table "spatial_ref_sys"
tid[392445]: INFO: ---- 1. setup table spatial_ref_sys ----
tid[392445]: ERROR: query failed: ERROR: dn4: relation "public.spatial_ref_sys" does not exist
DETAIL: query was: ALTER TABLE public.spatial_ref_sys SET (append_mode=on,rel_cn_oid =17324)

我们登陆到dn4上看,postgres数据库,确实没有public.spat。

标签:gs,8c,扩缩容,gbase,dn4,gha,0.84,100.0,GBase
From: https://blog.51cto.com/u_17023609/12045597

相关文章

  • 南大通用GBase 8c系统视图分析SQL执行时间
    南大通用GBase8c是一款多模多态数据库,支持主备式、分布式部署方式。对于故障和性能分析,内部提供丰富的工具和系统表或系统视图支撑实现。本文将介绍如何通过dbe_perf.statement系统视图分析SQL执行时间。1、概述dbe_perf.statement实际上是一个视图,这个视图实际执行的是get_inst......
  • 南大通用GBase 8c增量备份实践
    在当今信息化社会,数据的重要性不言而喻。对于企业来说,保护数据的完整性和可用性至关重要。数据库作为数据存储的核心组件,其备份与恢复策略的制定和实施是保障数据安全的关键一环。本文将详细介绍南大通用GBase8c数据库的增量备份实践操作,帮助读者掌握如何高效、可靠地进行数据备份......
  • 南大通用GBase 8c系统视图分析SQL执行时间
    南大通用GBase8c是一款多模多态数据库,支持主备式、分布式部署方式。对于故障和性能分析,内部提供丰富的工具和系统表或系统视图支撑实现。本文将介绍如何通过dbe_perf.statement系统视图分析SQL执行时间。1、概述dbe_perf.statement实际上是一个视图,这个视图实际执行的是get_inst......
  • GBASEDBTSERVER 环境变量7GBASEDBTSHMBASE 环境变量 (UNIX™)
    GBASEDBTSERVER环境变量GBASEDBTSERVER环境变量指定SQLAPI客户机、DB-Access实用程序或其他GBase8s产品与之建立显式或隐式连接的缺省数据库服务器。必须先设置此环境变量,才能使用GBase8s客户机产品。它具有以下语法。dbservername是缺省数据库服务器的名称。GBA......
  • D22 kubernetes 工作负载资源对象-Deployment{应用回滚、应用扩缩容、应用下线、应用
    1、应用回滚简介 在滚动更新过程中,如果新版本的pod启动失败或者已升级完成,但新版本中存在bug,则可以选择回滚到之前的可用版本。‘kubectlrollout‘命令可以方便的执行回滚和其他滚动更新管理,该命令支持Deployment、DaemonSet和statefulset资源查看博客网站的历史版本[root@......
  • GBase 8a支持定义主键
    GBase8a支持定义主键一、哪些数据类型可以定义主键主键列的数据类型支持TINYINT、SMALLINT、INT、BIGINTDECIMAL、NUMERIC、VARCHAR、、DATE、DATETINE、TIME,并且需要事先定义守段类型非空,否则不能创建主键;二、哪些表类型可以定义主键hash分布表哈希分布表的分区表复制......
  • GBase 8a支持在线备份功能
    GBase8a的gcbr.py工具提供基于快照的在线备份能力。实现在线库级和表级(包括批量表级备份)的全量备份/增量备份功能;在线备份过程分为元数据备份和表数据备份两个阶段,不同阶段对数据库使用的影响如下:(1)元数据备份阶段,阻塞DDL操作和DML操作。此阶段相对于表数据备份阶段来......
  • GBase 8a数据库运维管理系统--GDOM
    GDOM旨在为GBase8aMPP数据库提供全生命周期的运维保障,在为数据库提供可视化监控的同时,通过集群管理、主机管理、健康检查、告警等一系列功能,降低客户运维成本,提高客户运维效率,实时保障集群7*24正常运行。GDOM为复杂的集群操作配备了可视化任务配置页面,用户通过任务配置页可......
  • Gbase 8a支持DATE_TO_CHAR 函数
    DATE_TO_CHAR函数,功能是把日期格式化为YYYY-MIM-DD格式(format格式)的字符串;使用格式为:DATETO_CHAR(date,format)说明:date,日期类型;format,格式字符串;在开启控制参数时,format为可选参数,不输入format,默认为YYYY-MM-DD。DATE_TO_CHAR函数的使用优点众多,具体如下:1、提高......
  • GBase GCDW warehouse相关权限
    GCDW中,warehouse相关权限有三个,MODIFY_WAREHOUSE、OPERATE_WAREHOUSE、USAGE_WAREHOUSE;对应功能如下:MODIFY_WARHEOUSE:允许角色创建,删除,启动,挂起,修改warehouse属性的权限。OPERATE_WAREHOUSE:允许角色使用warehouse资源执行sql的权限,同时如果目标warehouse正处于suspend......