-
数据库: GaussDB(DWS)8.1.1 版本 目的: 1.将 A 数据库下的 user_a 用户的全部数据库对象导出来 2.将导出的数据库对象导入到 B 数据库下的 user_b 中 问题: 使用gs_dump命令导出 A 数据库下的 user_a 用户的全部数据库对象的dump包后,使用gs_restore命令将dump包导入到 B 数据库下的 user_b 时,会报用户不存在。 请问要如何指定参数才可以跨用户跨数据库导入导出?或者是否有其他方法能够实现该目的?
-
问题描述:有一个新节点上多次下发执行扩容的命令,后面的命令结果失败根因:VPC和mrs共用,添加了网段,这样dws会获取这个网段的路由,添加了 25.34.0.0的路由,导致管理网络回包网络不通规避措施:一、网络不通的时候已经发现及时登录ibmc1.删除路由:route del xxxxroute del -net 25.34.0.0/16 gw 0.0.0.02.注释/etc/init.d/addRoute.sh中添加二、失败后刷新rms数据库:1 刷新节点状态为2002.刷新节点类型为rds_instance.instcreatedtype为 INST3.删除扩容失败的rds_action信息4.插入rds_action 待重分布记录
-
【问题现象】 注册镜像、软件包、版本号工步失败 【常见版本】 8.2.1版本,BMS场景不需要GK包 【定位思路】 1、下载工步日志后,分析日志 [ERROR] [thread:25.install.1356.1391_None] [filename:Sub_Job_RegisterInstanceVersion.py] [line:70] [func:execute] 'Register GK Instance Version fail' 可见报错Register GK Instance Version fail,页面也可以看到。 2、注册GK包失败,BMS场景不需要GK包。【解决办法】1、 登录工步后台,cd /opt/FusionCloudDeploy/FusionCloudDeploy/plugins_cloudservice/DWS/scripts 找到Sub_Job_RegisterInstanceVersion.py这个文件,注释68-71行,如下: #status_code_gk = self.register_datastore_version(obs_packages, DataStoreType.GK) #if status_code_gk != 200: #logger.error("Register GK Instance Version fail") #return Message(500, "Register GK Instance Version fail") 2、后台重启Turkey容器后重试工步即可 。 重启容器命令:docker restart hcci_exec_project_id
-
【问题现象】 数据仓库服务->集群管理、容灾管理等页面 提示并发请求数量超过服务端限制 DWS.0097【常见版本】 8.2.0版本 【定位思路】 1、 日志对应定位信息 登录CDK master节点 执行以下命令列出dwscontroller容器列表。 kubectl get pods -n dws 进入DWS controller容器 kubectl exec -ti dwscontroller-xxx -n dws bash 进入容器中,默认在logs目录下,查看ossres-dws.log, 搜索日志DWS.0097有对应日志。 2、修改CDK参数配置去解决【解决方法】1、登录CDK界面,服务升级,选dwscontroller升级,搜maxConnectionPerTenant参数;2、检查dws-controller上maxConnectionPerTenant默认参数配置为20 ;3、将maxConnectionPerTenant的20修改成200,点击升级,完成后重启dws-controller容器让其生效。
-
【问题现象】UDF未启动,会导致使用javaUDF报错;导致cm在频繁重启UDF进程的时候,产生大量日志,消耗大量inode,严重情况会导致磁盘慢。使用UDF出现报错,后台查看集群UDF进程发现进程异常。影响:重要不紧急。【排查方法】本帖通过简单示例介绍UDF进程异常的排查和处理方式,示例中用到的数据、路径配置、主机名等信息均为测试环境信息。首先,通过以下命令查看集群UDF进程状态:cm_ctl query -CvF结果如下:[ Fenced UDF State ] node state -------------------- 1 ASG003 Down 2 host17967 Down 3 host17995 Down发现UDF进程处于异常状态,查看cm_agent日志(在$GAUSSLOG/cm/cm_agent目录下)发现udf频繁拉起失败,内容如下:2023-04-25 14:54:03.850 tid=41015 StartStop LOG: FENCED UDF START system(command: /DWS/manager/app/bin/gaussdb --fenced -k /opt/huawei/Bigdata/mppdb/mppdb_tmp -D /DWS/manager/log/Ruby/cm/cm_agent --ud6 >> "/DWS/manager/log/Ruby/cm/cm_agent/system_call-2023-04-25_145402-current.log" 2>&1 &).通过查看UDF日志(在$GAUSSLOG/cm/cm_agent/pg_log/目录下)发现报错文件不存在,内容如下:经确认,此路径与cm配置文件中的unix_socket_directory参数配置有关。此路径为$PGHOST的绝对路径,云上应为:/opt/dws/tmp;云下应为:/opt/huawei/Bigdata/mppdb/mppdb_tmp。修改cm配置文件unix_socket_directory参数,(由于客户环境敏感,未尝试是否能通过kill cm_agent解决。)待客户重启集群后解决。
-
启动命令python3 $GPHOME/script/GaussRoach.py -t start --restore-new-cluster -X /home/omm/cluster.xml
yd_251479724
发表于2023-05-24 13:56:48
2023-05-24 13:56:48
最后回复
yd_251479724
2023-05-26 08:30:56
169 13 -
【问题现象】 ecfclustermanager相关问题排查 【常见版本】 全版本 【排查方法】 1、 ECF容器登录 登录serviceOM, 查询EICommon-Region-Master虚拟机所在ip。 通过本地虚机跳转至region区CDK master节点 , 然后切换root用户。 ssh opsadmin@${region_cdk_master_ip} su - root 获取ecfclustermanager容器名称并登入。 kubectl get pods --all-namespaces -o wide kubectl exec -it ${NAME} -n ecf bash 2、ECF日志查看(主要看容器日志就行,搜索ERROR) 2.1日志路径(容器)/opt/cloud/3rdComponent/tomcat/logs/ossres-ecf.log 2.2日志路径(宿主机)/var/log/dws/controller/ossres-ecf.log 3、ECF数据库登录方式 3.1通过CDK查看数据库相关信息 登录CDK找到命名空间为ecf的namespace的ecfclustermanager服务(注意: ECF的有的版本在POD区,有些版本是在Region区,可以在POD区和Region区都找一下) 在参数信息中搜索db,搜索结果中db.username为数据库用户,db.password为数据库用户密码, db.url中包含了包含了数据库IP、端口号、数据库名 db.password为数据库用户密码, 该密码是经过加密过的,需要通过dwsmaintaintool来进行解密,执行命令即可登录上数据库: mysql -h 数据库IP -u 数据库用户名 -P 数据库端口号 -D 数据库名 –p数据库密码
-
问题背景业务perl脚本使用perl函数open一个文件通过管道符进行gsql调用,gsql \q 0正常退出后perl脚本退出后状态码为141,且perl脚本内无法捕获gsql退出状态码对应伪代码业务对应伪代码use strict;use warnings;my $database = "postgres";my $username = "username";my $password = "password";my $rc = open(infile,"|gsql -d ${database} -p 25308 -U $username -W $password -a -e -r");print infile<<ENDOFINPUT;drop table if exists t1;create table t1(id int,a int);insert into t1 values(1,1);select '1' from t1; \\if :row_count=1 \\q 0 \\endif...几千行注释加代码--->问题点所在ENDOFINPUTclose(infile);my $RET_CODE=$?;print "";print $RET_CODE;if($RET_CODE==0){ print 'true';}else{ print 'false';}执行脚本后 echo $?会显示141解决方案my $rc = open(infile,"|gsql -d ${database} -p 25308 -U $username -W $password -a -e -r");改为my $rc = open(infile,"|cat|gsql -d ${database} -p 25308 -U $username -W $password -a -e -r");(此处加了|cat)后执行正常perl可以捕获gsql正常退出码
-
问题背景C函数传入一个数字返回字符串如何实现解决方案----------------------------------------cpp文件#include "postgres.h"#include "fmgr.h"#include <stdio.h>#include "utils/builtins.h"PG_MODULE_MAGIC;extern "C" Datum ISNUMBER(PG_FUNCTION_ARGS);PG_FUNCTION_INFO_V1(ISNUMBER);DatumISNUMBER (PG_FUNCTION_ARGS){ Datum num = PG_GETARG_DATUM(0); const char *inbuf=TextDatumGetCString(num); PG_RETURN_TEXT_P(cstring_to_text(inbuf));}---------------------------------------------------创建函数create or replace function isnumberb(text)returns textas '/home/omm/yyb/c/in/isnumber.so', 'ISNUMBER'language c strict fenced IMMUTABLE SHIPPABLE;CREATE FUNCTIONTime: 2298.165 ms---------------------------------------------------验证postgres=# select isnumberb('12'); isnumberb ----------- 12(1 row)Time: 3.460 mspostgres=# select isnumberb('123456789'); isnumberb ----------- 123456789
-
问题背景业务使用upsert语句进行数据更新插入,对应字段未按实际情况进行更新问题原因业务insert into tablename后面未指定对应字段导致语句执行不符合预期,出现结果错误 ----------------------------------测试用例------------------------------------ 测试数据 1、创建目标表 create table t1(id int,a int,b int, c int,d int)distribute by hash(id); insert into t1 values(generate_series(1,3),generate_series(1,3),generate_series(1,3),generate_series(1,3),generate_series(1,3)); select * from t1 order by 1; id | a | b | c | d ----+----+----+----+---- 1 | 1 | 1 | 1 | 1 2 | 2 | 2 | 2 | 2 3 | 3 | 3 | 3 | 3 ALTER TABLE t1 ADD CONSTRAINT t1_id_a_b UNIQUE (id, a, b); 2、创建查询表 create table t2 (id int,a int,b int, c int,d int)distribute by hash(id); insert into t2 values(1,1,1,2,3); select * from t2; id | a | b | c | d ----+---+---+---+--- 1 | 1 | 1 | 2 | 3 3、业务语句 insert into t1 select id,a,b,d from t2 on conflict(id,a,b) do update set d=EXCLUDED.d; 4、执行结果(异常语句,d列被更新为空,实际应该为3) select * from t1 order by 1; id | a | b | c | d ----+----+----+----+---- 1 | 1 | 1 | 1 | 2 | 2 | 2 | 2 | 2 3 | 3 | 3 | 3 | 3 5、指定列后结果正常--insert into t1(id,a,b,d) insert into t1(id,a,b,d) select id,a,b,d from t2 on conflict(id,a,b) do update set d=EXCLUDED.d; select * from t1 order by 1; id | a | b | c | d ----+----+----+----+---- 1 | 1 | 1 | 1 | 3 2 | 2 | 2 | 2 | 2 3 | 3 | 3 | 3 | 3解决方案insert into tablename后面指定对应列避免出现结果错误。
-
1.例如Oracle、TD、GP等异构数据库迁移时,数据同步至DWS后数据存储膨胀或压缩比大致是多少有没有大概的区间呢?2.和行列存、压缩比关系大吗?
-
【问题现象】CMA和CMS连接中断导致主备切换集群短暂不可用【问题根因】裸机向交换机下发了限流配置,导致交换机突发丢包【问题排查】1.dws侧发生主备切换集群短暂不可用,查看CM日志,其中一个节点是cma和cms心跳超时,另外两个节点是实例状态上报超时,从而导致cms触发仲裁,主备切换;发现是由于cma和cms间的旧链接管道异常关闭了,重新连接之后恢复正常,集群主备切换后业务也正常;断开原因怀疑网络问题导致,排查网络,同时调整实例心跳超时时间instance_heartbeat_timeout=600s,尽量避免问题影响;2.部署gsar.sh脚本监控,排查是否网络问题;监控一天网络后分析结果,发现网络重传一直很高,判定网络链路问题(丢包/重传率 > 0.05%)3.交换机侧同事排查,发现对应设备的接口上存在限速配置,其限速为1gbps;4.查看对应聚合扣上的成员信息,发现日志内存在有成员口突发丢包记录;该日志表示接口流量存在突发,突发超过car的限速值时,会占用缓存,当缓存占用耗尽时,就会产生丢包。综上,可以确认是突发的流量超过了car的限速值,导致缓存消耗超过交换机本身缓存,初出现丢包。需要扩大car的限速值或者取消限速。【解决方案】1.现场instance_heartbeat_timeout为60s,已调整为600s降低问题出现概率;2.修改限速值或者取消限速策略,示例如下:修改car限速值:[huawei] traffic behavior bm[huawei] car cir x gbps[huawei] commit取消限速策略:[huawei] interface Eth-Trrunk124[huawei-Eth-Trunk124] undo traffic-policy bm-Eth-Trunk124 inbound[huawei-Eth-Trunk124] undo traffic-policy bm-Eth-Trunk124 outbound[huawei-Eth-Trunk124] commit
-
问题背景由于业务函数功能复杂希望使用多个cpp文件编写函数易于后期管理解决方案以下为ISNUMBERA.cpp文件内容实现判断字符串是否为数字,isnumberB会进行调用 --------------------------------------------------ISNUMBERA.cpp文件 #include<cstring> #include "isNumberA.h" int ISNUMBERA (char *q) { int len = strlen(q); for (int i = 0; i < len; i++) { if (q[i] >= '0' && q[i] <= '9') { continue; } else { return 0; } } return 1; } --------------------------------------------------isNumberA.h文件 extern int ISNUMBERA (char *q);--------------------------------------------------ISNUMBERB文件 #include "postgres.h" #include "fmgr.h" #include "utils/builtins.h" #include "isNumberA.h" PG_MODULE_MAGIC; extern "C" Datum ISNUMBERB(PG_FUNCTION_ARGS); PG_FUNCTION_INFO_V1(ISNUMBERB); Datum ISNUMBERB (PG_FUNCTION_ARGS) { Datum source = PG_GETARG_DATUM(0); char *q = TextDatumGetCString(source); int len = ISNUMBERA(q); if (len==0) { return 0; } return 1; } --------------------------------------------------编译操作 生成动态库文件 g++ -fpic -c isNumberA.cpp -I $GAUSSHOME/include/postgresql/server/cfunction g++ -fpic -c isNumberB.cpp -I $GAUSSHOME/include/postgresql/server/cfunction g++ -shared -o isNumberB.so isNumberB.o isNumberA.o 创建函数 create or replace function isnumberb(text) returns integer as '/路径/isNumberB.so', 'ISNUMBERB' language c strict fenced IMMUTABLE SHIPPABLE; 总结从上面可以看到,被调用函数其实就是普通的C函数,按照C语法写就行了,主函数需要遵守DWS对应C函数语法规范,这部分可以参考官方文档C函数编写。编译上最终生成主函数动态库,先编译调用的函数文件,再编译主函数文件最后生成动态库文件。
-
【报错日志】ERROR: canceling statement due to coordinator request, thread that sends the signal is 281411362154816.(老版本可能没有后面这句下发signal信号的线程号日志)【报错含义】此报错意思是CN下发cancel信号中断,新版本日志会记录发送信号的线程号 thread that sends the signal is 281411362154816,收到信号后由281411362154816线程杀【可能原因&排查方法】首先了解清楚现场是否有超时查杀脚本之类工具,可以根据报错作业执行时间大体判断;1.直接执行ctrl C中止作业;日志:2.使用pg_cancel_backend中止线程,此类情况可以在cn日志中grep cancel 找到pg_cancel_backend操作定位;日志:3.日志中只报错cancel,上述排查都不存在,不知道是谁下发的cancel将业务中止了;此类情况比较特殊,老版本没有记录发送signal信号的线程号无法确定是谁下发的;新版本增加线程号后,针对该场景仍不能有效定位;针对此类找不到谁下发的cancel信号导致业务中止场景,版本计划加入更多日志定位,近期应该就会发补丁,后续补充定位效果。。。。
-
如图所示,在使用尝试开发UDF时,返回值全为0,且报错, 请问DWS是否支持BigDecimal
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第五期2026/09/04 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;蒋春阳-华为云AI开发者案例开发专家
本期直播内容: AI工具体验营 · 第5-8课连讲。Agent-Team 多智能体协作完成毕业设计实践
回顾中 -
华为云开发者AI素养ClassRoom·第六期2026/09/08 周二 19:00-20:00
樊渊-2026华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签