• [开发应用] DWS能作为实时数据的数仓分层吗?就是不仅能实时写入,还能实时读取,处理后再实时写入
    DWS能作为实时数据的数仓分层吗?就是不仅能实时写入,还能实时读取,处理后再实时写入
  • [其他] GaussDB(DWS)管控面之DWS_10000告警(快照详情查询异常)
    GaussDB(DWS)管控面之DWS_10000告警(快照详情查询异常) 【问题现象】      OC可见告警ID为DWS_10000的告警,定位信息包含V1SnapshotController 。【常见版本】 HCS8.2.1    【分析原因】      1、首先查看OC告警详情中定位信息中包含关键字V1SnapshotController.getBackupDetail。  2、根据OC告警详情中附加信息中dwscontroller容器ID,查找ossres-dws.log,关键字DWS_10000。  3、再根据日志可以看到buildMultiBackupDetail方法会有空指针异常堆栈。  4、登录rms数据库,查询select name,backupDeviceId,clusterId from rds_cluster_backup,可见会有老版本集群会有backupDeviceId为null。  5、由于该字段为null与新版本不适配,故需要手动添加规避 【处理办法】 1、查询并拼接下列语句即可 update rds_cluster_backup set backupDeviceId=(select id from cluster_backup_device where clusterId='backupDeviceId为空的集群的集群id') where clusterId='backupDeviceId为空的集群的集群id';
  • [SQL] 【定位手段】手动查找cpu高sql
    前提:有现场1、确认cpu高的节点,要是所有节点都高找一个最高的2、通过top命令找一个cpu稳定高的进程process_id,对应此节点上的一个具体的实例。3、执行ps H -eo pid,tid,pcpu | sort -n -k 3 | grep {process_id}。按照cpu使用率升序排序,多次执行观察那几个thread_id的cpu使用率稳定高,记录thread_id。4、通过process_id查询到进程对应那个实例登录对应实例,命令如下ps -ef|grep process_id5、去上文实例路径下查询端口cat /data1/coordinator/postgresql.conf | grep port5、通过gsql登录该实例执行如下sql抓取cpu高的语句。select * from pg_stat_activity where query_id in (select query_id from pg_thread_wait_status where lwtid in (thread_id) and query_id <> '0');​
  • [迁移系列] 【PG迁移】表增加字段时if not exists
    1、 PostgreSQL 增加字段:Alter Table <table_name> add Column if not exists <column_name> <column_type>;2、GaussDB(DWS)折中替换CREATE OR REPLACE FUNCTION add_column(tbname character varying, colname character varying, coltype character varying) RETURNS void LANGUAGE plpgsql NOT FENCED NOT SHIPPABLEAS $$BEGIN begin EXECUTE format('ALTER TABLE %I ADD COLUMN %I %s',tbname,colname,coltype); exception when duplicate_column then null; when OTHERS then raise exception 'Error add column: %', SQLERRM; end;END$$;select add_column('schxx.tbxxx','new_column','varchar(11)');
  • [其他] 一天一个小知识 - SQL 临时表信息统计篇
    如何查询当前库内存在的临时表,以及临时表大小、所属用户、所属会话、倾斜率等情况?针对于GaussDB(DWS),临时表仅在当前会话可查询。换了其他会话后,会提示临时表属于其他会话,无法查询。GaussDB(DWS) 使一个分布式数据库,除了CN外,还有很多的DN。会话的执行,会同时在CN和DN上执行。从CN上无法查询,那么是否可以从DN上想办法入手呢?我们可以想办法从DN的系统表入手进行查询。​经过尝试,从DN上的系统表确实可以统计到临时表在这个DN上的信息。所以可以尝试收集集群所有DN实例上的临时表信息,在进行汇总。整理查询语句如下:selectsubstr(schemaname,(instr(schemaname,'_',-1))+1) as pid,substr(schemaname,9,7) as cooname,schemaname,tablename,ownername,sum(dnsize) as tablesize,round((max(dnsize)-avg(dnsize))/max(dnsize)*100,2) as skewpercentfrom pgxc_parallel_query('dn','selectb.nspname::text as schemaname,a.relname::text as tablename,c.usename::text as ownername,pg_table_size(a.oid)::numeric(38,0) as dnsizefrompg_class a,pg_namespace b,pg_user cwherea.relnamespace=b.oidand b.nspname like ''pg_temp%''and a.relowner=c.usesysid') tmp (schemaname text,tablename text,ownername text,dnsize numeric(38,0))group by 1,2,3,4,5,6;实际效果如下:注意:此语句适用于 8.1.3 及以后版本,8.1.3之前版本,可采用 execute direct on 进行改造。该语句仅能查询到非手动事务下的临时表信息。
  • [其他] DWS集群节点打开xxxx端口
    诉求:在节点安装监控工具,需要打开xxxx端口解决措施:1.修改节点防火墙设置:1)iptables -I INPUT 1 -p tcp —dport {要放通的端口} -j ACCEPT2)修改配置文件 /etc/sysconfig/iptables.save 参考8000端口进行配置,永久生效2.租户侧安全组放通对应的端口,入方向设置为any等3.修改完成可以尝试监控eth1网卡,   curl ip:端口   或者   telnet ip 端口
  • [其他] GaussDB(DWS)案例投稿指导
    1. 点击【案例投稿】(点击)进入案例编写界面板块:产品和服务/大数据/数仓GaussDB(DWS)分类:维护宝典,二层目录按照故障类型选择2. 案例内容推荐按照GaussDB(DWS)案例模板编写📄案例编写模板(点击)3. 投稿的案例会由GaussDB(DWS)定期进行审核筛选,具有案例参考价值的案例会在案例库中呈现🗂️案例库地址(点击)4. GaussDB(DWS)案例库说明GaussDB(DWS)故障案例库中收录的为精品案例,如需查看更多案例,请跳转《开发者论坛-维护宝典》(点击),此板块案例须经用户自行筛选判断是否有用。
  • dws-纯软环境下安装PostGIS-3.2.2
    线下安装postGis,注意刷新环境变量,注意刷新环境变量,注意刷新环境变量,重要的事情说三次。很多问题出现在环境变量中。另外注意在刷新其他使用$GAUSSHOME的环境变量之前,一定要先刷新source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile否则路径会出错1 准备软件包1.1 GCC-8.3编译器相关依赖软件包包括以下4个安装包[gcc-8.3.0、gmp-4.3.2、mpfr-2.4.2、mpc-1.0.3]:https://ftp.gnu.org/gnu/gcc/gcc-8.3.0/gcc-8.3.0.tar.gzhttps://ftp.gnu.org/gnu/gmp/gmp-4.3.2.tar.gzhttps://ftp.gnu.org/gnu/mpfr/mpfr-2.4.2.tar.gzhttps://ftp.gnu.org/gnu/mpc/mpc-1.0.3.tar.gz1.2 PostGIS-3.2.2 Extension源码包https://gitee.com/postgis-xc/postgis-xc-3.2.21.3 Zlib安装包(若未安装)https://sourceforge.net/projects/libpng/files/zlib/1.2.8/zlib-1.2.8.tar.gz/download2 GCC-8.3(GNU编译器套件)编译器安装*安装前注意集群中要有低版本的gcc和g++编译器,如果没有,需要找到镜像安装,详见: <安装问题汇总>以操作系统用户omm登录安装有MPPDB服务的任一主机。执行source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile命令启动环境变量。b.创建GCC安装主目录$GAUSSHOME/gcc和代码下载目录$GAUSSHOME/gcc/packages mkdir $GAUSSHOME/gccmkdir $GAUSSHOME/gcc/packages再下载软件包gcc-8.3.0.tar.gz、gmp-4.3.2.tar.gz、mpc-1.0.3.tar.gz、mpfr-2.4.2.tar.gz至$GAUSSHOME/gcc/packages目录。解压下载软件 cd $GAUSSHOME/gcc/packagestar -xzf gcc-8.3.0.tar.gztar -xzf gmp-4.3.2.tar.gztar -xzf mpc-1.0.3.tar.gztar -xzf mpfr-2.4.2.tar.gz创建GCC安装目录。mkdir $GAUSSHOME/gcc/gcc-8.3.0mkdir $GAUSSHOME/gcc/gcc-8.3.0/dependmkdir $GAUSSHOME/gcc/gcc-8.3.0/depend/gmp-4.3.2mkdir $GAUSSHOME/gcc/gcc-8.3.0/depend/mpfr-2.4.2mkdir $GAUSSHOME/gcc/gcc-8.3.0/depend/mpc-1.0.3mkdir $GAUSSHOME/gcc/gcc-8.3.0/depend/gcc安装gmp-4.3.2进入$GAUSSHOME/gcc/packages/gmp-4.3.2目录,执行下列命令完成gmp安装操作:cd $GAUSSHOME/gcc/packages/gmp-4.3.2./configure --prefix $GAUSSHOME/gcc/gcc-8.3.0/depend/gmp-4.3.2make -sjmake install -sj安装mpfr-2.4.2进入$GAUSSHOME/gcc/packages/mpfr-2.4.2目录,执行以下命令完成mpfr安装操作:cd $GAUSSHOME/gcc/packages/mpfr-2.4.2./configure --prefix $GAUSSHOME/gcc/gcc-8.3.0/depend/mpfr-2.4.2 --with-gmp=$GAUSSHOME/gcc/gcc-8.3.0/depend/gmp-4.3.2make -sjmake install -sj安装mpc-1.0.3。进入$GAUSSHOME/gcc/packages/mpc-1.0.3目录,执行下列命令完成mpc安装操作:cd $GAUSSHOME/gcc/packages/mpc-1.0.3./configure --prefix=$GAUSSHOME/gcc/gcc-8.3.0/depend/mpc-1.0.3  --with-gmp=$GAUSSHOME/gcc/gcc-8.3.0/depend/gmp-4.3.2 --with-mpfr=$GAUSSHOME/gcc/gcc-8.3.0/depend/mpfr-2.4.2 make -sj make install -sj安装gcc-8.3.0。执行如下命令添加环境变量。export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$GAUSSHOME/gcc/gcc-8.3.0/depend/gmp-4.3.2/lib:$GAUSSHOME/gcc/gcc-8.3.0/depend/mpfr-2.4.2/lib:$GAUSSHOME/gcc/gcc-8.3.0/depend/mpc-1.0.3/lib进入$GAUSSHOME/gcc/packages/gcc-8.3.0目录,执行下列命令完成gcc安装操作。cd $GAUSSHOME/gcc/packages/gcc-8.3.0./configure --prefix=$GAUSSHOME/gcc/gcc-8.3.0/depend/gcc -disable-multilib --with-gmp=$GAUSSHOME/gcc/gcc-8.3.0/depend/gmp-4.3.2 -enable-languages=c,c++ --with-mpfr=$GAUSSHOME/gcc/gcc-8.3.0/depend/mpfr-2.4.2 --with-mpc=$GAUSSHOME/gcc/gcc-8.3.0/depend/mpc-1.0.3make -sjmake install -sj执行如下命令添加环境变量。export CC=$GAUSSHOME/gcc/gcc-8.3.0/depend/gcc/bin/gccexport CXX=$GAUSSHOME/gcc/gcc-8.3.0/depend/gcc/bin/g++export LD_LIBRARY_PATH=$GAUSSHOME/gcc/gcc-8.3.0/depend/gcc/lib64:$LD_LIBRARY_PATHexport PATH=$GAUSSHOME/gcc/gcc-8.3.0/depend/gcc/bin:$PATH验证GCC是否安装成功gcc --versiong++ --version3 zlib安装Libxml2软件包编译安装依赖zlib无损数据压缩库omm 用户执行find /usr/ -name libz.a如果libz.a存在则zlib已安装*注意:会有一些Permission denied,注意找到libz.a就可以安装包:https://sourceforge.net/projects/libpng/files/zlib/1.2.8/zlib-1.2.8.tar.gz/download以root用户进入代码目录并执行如下命令进行安装,安装完成后再次切换回omm用户*注意切换到root之后要重新刷新环境变量环境变量如下: source ${BIGDATA_HOME}/mppdb/.mppdbgs_profileexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$GAUSSHOME/gcc/gcc-8.3.0/depend/gmp-4.3.2/lib:$GAUSSHOME/gcc/gcc-8.3.0/depend/mpfr-2.4.2/lib:$GAUSSHOME/gcc/gcc-8.3.0/depend/mpc-1.0.3/libexport CC=$GAUSSHOME/gcc/gcc-8.3.0/depend/gcc/bin/gccexport CXX=$GAUSSHOME/gcc/gcc-8.3.0/depend/gcc/bin/g++export LD_LIBRARY_PATH=$GAUSSHOME/gcc/gcc-8.3.0/depend/gcc/lib64:$LD_LIBRARY_PATHexport PATH=$GAUSSHOME/gcc/gcc-8.3.0/depend/gcc/bin:$PATH安装命令: ./configuremake -sjmake install -sjsu - ommsource ${BIGDATA_HOME}/mppdb/.mppdbgs_profile4 autoconf和automake安装安装JSON-C软件包编译安装依赖autoconf和automake工具检查是否安装autoconf和automake工具:rpm -qa|grep autoconfrpm -qa|grep automake若集群中没有autoconf和automake工具,可以通过挂载操作系统镜像等方法进行安装rpm -ivh ***.rpm5 PostGIS依赖库安装获取PostGIS源码cd $GAUSSHOMEgit clone https://gitee.com/postgis-xc/postgis-xc-3.2.2*若直接下载压缩包,则解压后需将文件夹重命名为postgis-xc-3.2.2 :-- 上传postgis-xc-3.2.2-master.zipunzip postgis-xc-3.2.2-master.zipmv postgis-xc-3.2.2-master postgis-xc-3.2.2从Sqlite官网下载sqlite-autoconf-3360000并解压至$GAUSSHOME/postgis-xc-3.2.2目录下cd $GAUSSHOME/postgis-xc-3.2.2wget https://www.sqlite.org/2021/sqlite-autoconf-3360000.tar.gztar -zxf sqlite-autoconf-3360000.tar.gz或导入安装包后解压以操作系统用户omm登录安装有MPPDB服务的任一主机。执行source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile命令启动环境变量。*在安装PostGIS下列依赖库前,注意提前安装cmake,否则在./configure时会报‘You need cmake to build this package’这个问题 – 详见10.4分别编译Geos、Sqlite3、Proj、JSON-C、Libxml2、PostGIS并生成相关动态链接库Geoscd $GAUSSHOME/postgis-xc-3.2.2/geos-3.11.0chmod +x ./configure./configure --prefix=$GAUSSHOME/install3/geosmake -sjmake install -sjSqlite3cd $GAUSSHOME/postgis-xc-3.2.2/sqlite-autoconf-3360000mkdir build./configure --prefix=$GAUSSHOME/postgis-xc-3.2.2/sqlite-autoconf-3360000/buildmake -sjmake install -sj*设置Sqlite3环境变量export SQLITE_PATH=$GAUSSHOME/postgis-xc-3.2.2/sqlite-autoconf-3360000/buildexport PATH=$SQLITE_PATH/bin:$PATHexport SQLITE3_CFLAGS=$SQLITE_PATH/includeexport SQLITE3_LIBS=$SQLITE_PATH/lib/libsqlite3.laexport C_INCLUDE_PATH=$SQLITE_PATH/include:$C_INCLUDE_PATHexport CPLUS_INCLUDE_PATH=$SQLITE_PATH/include:$CPLUS_INCLUDE_PATHexport LD_LIBRARY_PATH=$SQLITE_PATH/lib:$LD_LIBRARY_PATHProjcd $GAUSSHOME/postgis-xc-3.2.2/proj-6.0.0chmod +x ./configure./configure --prefix=$GAUSSHOME/install3/projmake -sjmake install -sjJSON-Ccd $GAUSSHOME/postgis-xc-3.2.2/json-c-0.12.1-20160607chmod +x ./configure./configure --prefix=$GAUSSHOME/install3/json CFLAGS='-Wno-implicit-fallthrough'make -sjmake install -sjLibxml2cd $GAUSSHOME/postgis-xc-3.2.2/libxml2-2.7.1chmod +x ./configure./configure --prefix=$GAUSSHOME/install3/libxml2make -sjmake install -sjPostGIScd $GAUSSHOME/postgis-xc-3.2.2/postgis-3.2.2chmod +x ./configure./configure --prefix=$GAUSSHOME/install3/pggis --with-pgconfig=$GAUSSHOME/bin/pg_config --with-projdir=$GAUSSHOME/install3/proj --with-geosconfig=$GAUSSHOME/install3/geos/bin/geos-config --with-jsondir=$GAUSSHOME/install3/json  --with-xml2config=$GAUSSHOME/install3/libxml2/bin/xml2-config --without-topology --without-address-standardizer CFLAGS='-O2 -fpermissive -DPGXC  -pthread -D_THREAD_SAFE -D__STDC_FORMAT_MACROS -DMEMORY_CONTEXT_CHECKING -w'  CC=g++ --without-protobuf --without-raster make -sjmake install -sj* 执行postgis依赖库编译检查时报错could not find libgeos_c.so : 确认在$GAUSSHOME/install3/geos/lib64目录下是否存在libgeos_c.so动态库,若不存在,请重新安装geos库;若存在,则使用如下命令更新环境变量:export LD_LIBRARY_PATH=$GAUSSHOME/install3/geos/lib64:$LD_LIBRARY_PATH* 如果安装中报错没找到头文件“could not find xxx.h”,则设置下列环境变量:export C_INCLUCDE_PATH=$GAUSSSHOME/include/postgresql/server:$C_INCLUDE_PATHexport CPLUS_INCLUDE_PATH=$GAUSSHOME/include/postgresql/server:$CPLUS_INCLUDE_PATH* 执行postgis依赖库编译时报错undefined reference to 'libiconv' : libiconv库缺失或链接失败会报错undefined reference to 'libiconv', 若未安装libiconv库,则先安装libiconv库,然后将安装后的libiconv库include下的文件复制至/usr/local/include下,将libiconv库中lib下文件复制至/usr/local/lib下。6 分发PostGIS相关动态链接库omm用户执行$GAUSSHOME/postgis-xc-3.2.2/postgis-3.2.2目录下的脚本文件PostGIS_install--3.2.2.sh,完成PostGIS相关动态链接库在集群节点中的分发。export GISHOME=$GAUSSHOMEsh $GAUSSHOME/postgis-xc-3.2.2/postgis-3.2.2/PostGIS_install--3.2.2.sh7 添加PostGIS所需的环境变量export LD_LIBRARY_PATH=$GAUSSHOME/install3/geos/lib64:$GAUSSHOME/install3/proj/lib:$LD_LIBRARY_PATHexport LD_LIBRARY_PATH=$GAUSSHOME/install3/json/lib:$GAUSSHOME/install3/proj/lib:$GAUSSHOME/install3/libxml2/lib:$LD_LIBRARY_PATH8 重启集群-完成安装gs_om -t stop && gs_om -t start9 测试PostGIS使用创建Extension直接使用CREATE EXTENSION命令进行创建:CREATE EXTENSION postgis;创建几何表CREATE TABLE cities ( id integer, city_name varchar(50) );SELECT AddGeometryColumn('cities', 'position', 4326, 'POINT', 2);插入几何数据INSERT INTO cities (id, position, city_name) VALUES (1,ST_GeomFromText('POINT(-9.5 23)',4326),'CityA');INSERT INTO cities (id, position, city_name) VALUES (2,ST_GeomFromText('POINT(-10.6 40.3)',4326),'CityB');INSERT INTO cities (id, position, city_name) VALUES (3,ST_GeomFromText('POINT(20.8 30.3)',4326), 'CityC');计算三个城市间任意两个城市距离SELECT p1.city_name,p2.city_name,ST_Distance(p1.position,p2.position) FROM cities AS p1, cities AS p2 WHERE p1.id > p2.id;至此完成10 安装问题汇总10.1 安装zlib:Compiler error reporting is too harsh for ./configure (perhaps remove -Werror)运行./configure 命令的时,若如果报出如下错误Compiler error reporting is too harsh for ./configure (perhaps remove -Werror)在此情况下,进入zlib-1.2.8目录,vim configure文件,把echo “Checking for obsessive –compulsive complier options..”>>configure.logif try $CC –c $CFLAGS $TEST.C; thenelse…Leave 1Fi这段进行删除/注释,问题将解决10.2 安装zlib:error while loading shared libraries: libmpfr.so.1: cannot open shared object file: No such file or directory在 make/make install 时,如果出现以下报错:/opt/huawei/Bigdata/mppdb/core/gcc/gcc-8.3.0/depend/gcc/bin/gcc -O -DNO_FSEEKO -DNO_STRERROR -DNO_snprintf -DHAS_sprintf_void   -c -o adler32.o adler32.c/opt/huawei/Bigdata/mppdb/core_2ee2f710/gcc/gcc-8.3.0/depend/gcc/bin/../libexec/gcc/x86_64-pc-linux-gnu/8.3.0/cc1: error while loading shared libraries: libmpfr.so.1: cannot open shared object file: No such file or directory*刷新环境变量source ${BIGDATA_HOME}/mppdb/.mppdbgs_profileexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$GAUSSHOME/gcc/gcc-8.3.0/depend/gmp-4.3.2/lib:$GAUSSHOME/gcc/gcc-8.3.0/depend/mpfr-2.4.2/lib:$GAUSSHOME/gcc/gcc-8.3.0/depend/mpc-1.0.3/libexport CC=$GAUSSHOME/gcc/gcc-8.3.0/depend/gcc/bin/gccexport CXX=$GAUSSHOME/gcc/gcc-8.3.0/depend/gcc/bin/g++export LD_LIBRARY_PATH=$GAUSSHOME/gcc/gcc-8.3.0/depend/gcc/lib64:$LD_LIBRARY_PATHexport PATH=$GAUSSHOME/gcc/gcc-8.3.0/depend/gcc/bin:$PATH10.3 未安装cmake下载安装:[如:3.23.4版本]https://3ms.huawei.com/km/blogs/details/13080075将压缩包放在/opt下, 解压tar -zxf cmake-3.23.4-linux-x86_64.tar.gz转到root用户建立软连接 <注意修改路径名>ln -sf /opt/cmake-3.23.4-linux-x86_64/bin/* /usr/bin/检查cmake --version配置环境变量vim ~/.bashrc输入以下变量:[注意修改路径]export PATH=$PATH:/opt/cmake-3.23.4-linux-x86_64/bin刷新环境变量source ~/.bashrc10.5 Compiler error reporting is too harsh for ./configure (perhaps remove -Werror)  则执行下方语句     slbConfigure=/opt/huawei/openresty/lualib/zlib-1.2.12/configure(这里替换自己的路径)     startLine=`sed -n '/echo "Checking for obsessive-compulsive compiler options..." >> configure.log/=' $slbConfigure`     lineAfter=7     let endLine="startLine + lineAfter"     sudo sed -i $startLine','$endLine'd' $slbConfigure   执行后再执行./configure即可10.7 安装Proj:hidden symbol isn’t defined; final link failed: Bad value; collect2: error: ld returned 1 exist statusPostGIS安装依赖库- Proj,完成./configure (无ERROR),执行make -sj命令的时,报如下的错误:hidden symbol isn’t defined; final link failed: Bad value; collect2: error: ld returned 1 exist status解决方式:检查geos和sqlite3是否安装,环境变量是否刷新10.8 创建Extension:ERROR: Postgis is not yet supported, please add enable_postgis_extension into feature_support_options进入数据库查看SHOW feature_support_options;添加一下GUC参数即可 – 所有CN,DN一起gs_guc set -Z coordinator -Z datanode -N all -I all -c "feature_support_options='enable_postgis_extension'"重启集群生效:gs_om -t stop && gs_om -t start再进入数据库查看SHOW feature_support_options;10.9 低版本的gcc和g++编译器安装先找到挂载镜像安装包的位置[例如常用的RedHat 7.6的挂在位置为/media]cd /media/Packages安装如下两个文档rpm -ivh gcc-c++-4.8.5-36.el7.x86_64.rpmrpm -ivh gcc-4.8.5-36.el7.x86_64.rpm安装中出现任何依赖的安装, 安装对应的包就行例如:  rpm -ivh cloog-ppl-0.15.7-1.2.el6.x86_64.rpm
  • [集群&DWS] HCS形态下没有OBS怎样上传JAR包创建javaUDF
    Step1:上传.jar包到CN;Step2:在沙箱外,将.jar包放在沙箱内能访问到的路径中例如:/ var/chroot/dws/data1Step3:进入沙箱ssh <IP>Step4:部署javaUDF文件gs_om -t javaUDF -m addjar -s /dws/data1Step5:查看javaUDF文件是否部署成功gs_om -t javaUDF -m ls
  • [集群&DWS] 连接失败: gsql: error while loading shared libraries: libpq.so.5: cannot open shared object file: No such file or directory
    1 问题gsql 远程连接集群时, 报错:      gsql: error while loading shared libraries: libpq.so.5: cannot open shared object file: No such file or directory2 解决步骤2.1 首先检查lib文件夹中,是否存在libpq.so.5这个文件如果没有,建议重新安装gsql命令行客户端2.2 修改脚本gsql_env.sh的环境变量gsql_env.sh的目的是配置LD_LIBRARY_PATH / PATH这两个变量将${libpath}更换成客户端工具安装的路径下的lib目录修改后如下:export LD_LIBRARY_PATH=/xxxxx/lib:${LD_LIBRARY_PATH}export PATH=/xxxxx/bin:${PATH}如:export LD_LIBRARY_PATH=/opt/bin/dws/lib:${LD_LIBRARY_PATH}export PATH=/opt/bin/dws/bin:${PATH}2.3 手动配置这两个环境变量到linux家目录启动文件这样每次登陆,自动加载环境变量Step 1:        cd ~ Step 2:        ls -al .bash_profile确认文件存在, 执行Step3Step 3:        vim .bash_profile       将两个环境变量加在文件末尾,如:export LD_LIBRARY_PATH=/opt/bin/dws/lib:${LD_LIBRARY_PATH}export PATH=/opt/bin/dws/bin:${PATH}Step 4:        :wq*注意1. 在export LD_LIBRARY_PATH行上添加LD_LIBRARY_PATH=/usr/local/lib/ 的原因是在此项目环境下,LD_LIBRARY_PATH的路径为空。在检查路径时,“:”被当做路径下的文件名,所以LD_LIBRARY_PATH后会多一个“:”。导致查找这个变量的时候被检测成文件而不是路径。那么给它设置一个初始的默认路径,它就不为空了,也就能正常检测到了2. 改此变量仅对当前用户有效,且如果想立即生效: source .bash_profile3. 软连接,设置对应的.bash_profile 内的路径也要设置为/opt/bin/dws/./lib       这样才能正常开机/重连启动2.4 检查Step 1:        echo ${变量名}       检查变量配置的路径是否是预期路径Step 2:        重启reboot或者重新连接relink确认环境变量是否成功启动Step 3:        使用gsql客户端尝试是否可以成功链接集群
  • [存储] GaussDB(DWS)之备份失败,且管控面日志显示Error: Unable to import module: No module named configparser
    【问题现象】管控面下发快照失败,报错rdsChannel call [backup] failed.FailMgs:ERROR:root:open /rds/datastore/dws/v2.1.501/base.py failed! except:Error: Unable to import module: No module named configparser【问题根因】agent升级未回滚彻底【解决方法】手动回滚base.py1. root用户所有节点都执行:2. chattr -i /rds/datastore/base.py3. mv /rds/datastore/base.py /rds/datastore/base_bk1227.py4. cp /rds/datastore/dws/v2.1.501/base.py /rds/datastore/base.py
  • [热门活动] GaussDB(DWS) 2023年终总结,2024年,我们一起大展龙威!
    时光匆匆,2023年已经结束了,感谢所有关注GaussDB(DWS)的小伙伴,2023年我们一起经历了很多精彩瞬间,让我们一起来回顾这一年的经历与成长。💓持续创新华为云GaussDB(DWS)数据仓库,历经12年技术演进,2011年开始技术预研,2014年首次上市,通过不停地迭代和演进,从2017年开始大规模商用,当前全球已累积1700+大客户。针对数仓发展趋势,GaussDB(DWS)也在不断地演进,2023年发布了云原生数仓,支持存算管三层分离、湖仓一体、数智融合,具备优异性能和极致弹性能力。GaussDB(DWS)云原生数仓技术解析:cid:link_4🎉收获认可2023年8月,全球领先的IT市场研究和咨询公司IDC正式发布《中国关系型数据库软件市场跟踪报告-数据仓库市场Add-on》报告,华为云GaussDB(DWS)凭借领先的技术和优异的市场表现,荣获“双第一”。链接📖社区建设2020年5月至今,我们共推出了860+篇技术博客和50+培训视频,其中,2023年发表博客140篇,举办直播10场,涉及技术架构、对象设计、性能调优、数据访问、安全、资源管控、高可用、备份容灾、监控运维、迁移等12个专题,全方位地帮助开发者学习和使用GaussDB(DWS)。GaussDB(DWS)开发者学习路径全景地图:cid:link_0​🕕2023年都有哪些好玩的社区活动,大家一起来回顾下:🔴2023年1月:玩转PB级数仓GaussDB(DWS)有奖征文活动结合产品试用和沙箱实验,我们面向开发者征集文章,共有19位开发者参与活动,发表32篇文章。他们分别是:@林欣、@fxy0224、@一剑战八荒、@积少成多、@福州司马懿、@yd_240675315、@清雨小竹、@sevenjiang、@323老四、@门前一棵葡萄树、@yd_278301229、@nukinsan、@y-wolfandy、@江湖有缘、@譡里个檔、@愚公搬代码、@yd_220527686、@along_2020、@上进小菜猪。感谢各位开发者小伙伴们对我们产品的支持与热爱。💖🔴2023年2月:情人节为爱挑战!这次活动是GaussDB(DWS)第一次在情人节为大家准备小福利,通过关注公众号、填写问卷、加入交流群,即可获得喜茶代金券,这一次,我们认识了9名新同学。🔴2023年7月:华为开发者日20237月7-9日和各位开发者在东莞松山湖,开展了线下交流和云原生沙箱体验。有2位开发者向我们投稿了开发者故事,在此特别感谢姚圣伟、张法凯同学对我们的认可。 开发者故事:我与GaussDB(DWS)的不解之缘cid:link_6 开发者故事:数据库迁移全保障cid:link_3​🔴2023年8月:GaussDB(DWS)知识竞赛活动我们通过6期答题活动帮助各位开发者了解GaussDB(DWS),有25名小伙伴是通过这个活动第一次关注到了GaussDB(DWS),欢迎你们在评论区留言对GaussDB(DWS)的体验感受。🔴2023年10月:云咖问答活动随着大数据时代的到来,人人用数变得越来越迫切,数据作为重要的生产要素和流动载体,如何加强技术层面的数据安全和隐私保护,对数据仓库产品本身提出更高的要求。我们邀请了华为云GaussDB(DWS)云服务研发专家胡老师坐阵,和大家一起探讨关于GaussDB(DWS)数据脱敏的话题。共收到29名开发者提出的87条问题,相信通过老师的解答,大家对数据脱敏都有了一定的理解,还未关注到活动的小伙伴,可以点击链接了解活动情况。1024程序员节活动15道知识问答、用代码画GaussDB(DWS)标识,两个小互动对您来说是小菜一碟还是略微有点难?GaussDB(DWS)14位程序员快问快答,哪一位最让您印象深刻?一起来回顾一下:链接。🔴2023年11月:绽放吧!GaussDB(DWS)云原生数仓有奖征文活动结合云原生数仓沙箱实验,推出征文活动,共有12位开发者热情参与活动,发表23篇文章。他们分别是:@bug菌、@gentle_zhou、@nullptr、@yd_249256431、@白鹿第一帅、@不想吃土豆、@龙腾九州、@幕后小黑爪、@你是猴子请来的救兵吗、@皮牙子抓饭、@前进的蜗牛、@西岭雪山、@一剑战八荒。GaussDB(DWS)知识社区因为有你们而更加多彩。🔴2023年12月:HCDG城市行—天津站这一次我们相聚天津,与GaussDB(DWS)架构师周孟韬共同探讨云原生数仓技术与优势。现场有技术讨论、沙箱体验、有产品建议、有欢声笑语,感谢6位开发者的参与。特别感谢GaussDB(DWS)开发者—姚圣伟帮忙组织活动,包括前期活动宣传、物料制作、现场支撑。愉快的一年又结束了,感谢各位开发者笔耕不辍,让更多人在使用GaussDB(DWS)的时候有文章、视频借鉴,让更多人在GaussDB(DWS)的使用之路上走得更顺畅。2024年,希望新的一年还能有你们的陪伴,愿大家在新的一年里与GaussDB(DWS)社区共同进步,共同发展!祝大家新年快乐,龙腾虎跃!
  • [其他] GaussDB(DWS)扩容之多个容器安装工步失败
    【问题版本】 HCS830【问题描述】 安装部署扩容时DWS和ECF多个容器安装工步失败【问题影响】 无【问题根因】 CDK节点到镜像仓库网络不通【定位过程】 1、工步详情界面报异常为:code:500,Deploy service status abnormal 容器状态异常;2、安装部署安装多个容器工步报错,查看导出日志发现报错:容器镜像拉取失败,超时;{"podName":"dwsmaintaintool-XXXXXXXX-XXXX","uid":"XXXXXX-XXXX-XXXX-XXXX-XXXXXXXX","hostIP":"XX.XX.XX.XX","creationTime":"2023-12-28T14:59:56Z","status":"Pending","lifeName":"image","message":"Failed to pull image \\\\"cdk-api.cs.cloudoc.nxjiaotou.com:20202/op_svc_cdk/dwsmaintaintool-aarch64:8.3.0.2023XXXXXXXXXX\\\\": rpc error: code = Unknown desc = Error ****on: Get https://cdk-api.cs.cloudoc.nxjiaotou.com:20202/v2/: net/http: ****led while waiting for connection (Client.Timeout exceeded while awaiting headers)","reason":"FailedPullImage","eventTime":"2023-12-28T15:00:16Z","advice":null}3、到后台去查看容器状态,发现拉取镜像失败;kubectl describe pod <podname> -n <namespace>4、CDK节点curl镜像仓地址加端口不通,是CDK节点到镜像仓网络不通,建关联单,找CDK同事;(IP可在CDK镜像管理里面查)5、CDK同事让只需要集群节点到镜像仓库的地址:20202放通,服务网段和容器网段不用管,网络打通后,重试工步成功;【规避措施】        CDK节点IP到镜像仓库的地址:20202端口放通后重试工步
  • [技术原理] DWS从入门到进阶全套学习资料
    课程内容视频链接1、GaussDB(DWS)产品介绍cid:link_12、GaussDB(DWS)集群部署与管理cid:link_23、GaussDB(DWS) 数据迁移cid:link_34、GaussDB(DWS) 数据库对象设计cid:link_45、GaussDB(DWS) SQL进阶及应用开发指南cid:link_56、GaussDB(DWS)事务、锁机制管理cid:link_67、GaussDB(DWS)资源负载管理cid:link_78、GaussDB(DWS)性能调优cid:link_89、GaussDB(DWS)安全与权限设计cid:link_910、GaussDB(DWS) 补丁、升级及扩容流程cid:link_1011、GaussDB(DWS) 备份与恢复cid:link_1112、GaussDB(DWS) 日常巡检cid:link_12DWS最佳实践博客链接DWS最佳实践(一)DWS表设计cid:link_13DWS最佳实践(二)DWS数据的导入方式cid:link_14DWS最佳实践(三)DWS数据库日常运维操作cid:link_15DWS最佳实践(四)用户权限管理cid:link_16DWS最佳实践(五)DWS数据库的SQL调优基础cid:link_16DWS技术博客博客链接1、GaussDB for DWS高可用之主备从HA技术cid:link_172、GaussDB For DWS 字符集浅谈cid:link_183、GaussDB(DWS)存储系列之行存表cid:link_194、Gauss行列存储压缩总结cid:link_20​5、GaussDB(DWS)之数据库对象设计cid:link_216、GaussDB for DWS 高可用之数据复制cid:link_227、GaussDB(DWS)数据量太大?试试GDS并行导入cid:link_238、GaussDB(DWS) GDS导入容错详解cid:link_249、GaussDB(DWS)实践系列-性能优化最佳实践cid:link_2510、WDR-GaussDB(DWS)的性能监测报告cid:link_011、GaussDB(DWS)性能调优系列基础篇一:万物之始analyze统计信息cid:link_2612、GaussDB(DWS)性能调优系列基础篇二:大道至简explain分布式计划cid:link_2713、GaussDB(DWS)性能调优系列基础篇三:衍化至繁之分布式计划详解cid:link_2814、GaussDB(DWS)性能调优系列实战篇一:十八般武艺之总体调优策略cid:link_2915、GaussDB(DWS)性能调优系列实战篇二:十八般武艺之坏味道SQL识别cid:link_3016、GaussDB(DWS)性能调优系列实战篇三:十八般武艺之好味道表定义cid:link_3117、GaussDB(DWS)性能调优系列实战篇四:十八般武艺之SQL改写cid:link_3218、GaussDB(DWS)性能调优系列实战篇五:十八般武艺之路径干预cid:link_3319、GaussDB(DWS)性能调优系列实现篇六:十八般武艺Plan hint运用cid:link_34
  • [应用案例] 扩容重分布期间,倾斜导致集群降级处理案例
    扩容重分布时,如果带着严重倾斜的大表重分布,存在风险,可能造成磁盘满,导致集群降级甚至不可用。根因分析:倾斜表是由于分布键设置不合理,导致表的数据集中到少量dn上造成的。扩容重分布时,需要将所有表重新生成一遍,此时集群磁盘使用会上升,而且重分布期间集群不会只读,重分布倾斜的大表时,可能使磁盘空间达到95%,导致实例被杀,从而造成集群降级甚至不可用。注意:以下操作可能涉及高危命令,请在华为研发人员指导下运行1.将集群设置为只读(视情况决定是否关闭白名单)gs_guc reload -Z coordinator -Z datanode -N all -I all -c "default_transaction_read_only=on"2.停止只读检测,让集群恢复降级(停止磁盘95%杀实例的机制)gs_guc reload -Z cm -N all -I all -c "enable_transaction_read_only=off"3.排查磁盘满原因,根据磁盘满原因进行处理。(本文只讨论由于倾斜导致盘满的情况)4.找到倾斜的表,数据量小的情况可全库扫描倾斜表,数据量大的情况,可通过倒推法找到【总结】【数据倾斜】通过倒推法找出数据倾斜严重的表_数仓GaussDB(DWS)_大数据_华为云论坛 (huaweicloud.com)5.如果找到的表是形如data_redis.data_redis_tmp_XXX的临时表,XXX为原表oid,找到其原表并记录select * from pg_class where oid = XXX;6.确认排查工作完成后,解除只读gs_guc reload -Z coordinator -Z datanode -N all -I all -c "default_transaction_read_only=off"7.drop掉前面找到的临时表8.等待集群恢复正常后(如果有严重xlog堆积的情况,可以考虑全量build,注意是否有磁盘100%风险),均衡集群checkpoint;       (任意cn上执行3次)cm_ctl switchover -a9.将倾斜的原表设置为跳过重分布,XXX为表的oidupdate pgxc_class set redis_order=0 where pcrelid = XXX;10.获取建表语句后,创建一个和原表表定义相同,但分布方式合理的新表select * from pg_get_tabledef('schema名.表名');11.将原表数据导入新表insert into 新表 select * from 原表;12.确认数据无误后,将原表重命名为原表_bak,将新表重命名为原表,再度确认无误后,删除原表_bak。(无法回退,请操作前务必确认清楚!)此刻,该表重分布已完成13.开启只读检测,再度拉起重分布(如果有关闭白名单,记得开启)gs_guc reload -Z cm -N all -I all -c "default_transaction_read_only=on"后记:应急处理,耗时耗力,还有风险。提前处理,防范于未然,方乃上策。扩容前信息收集(./gs_check -e collect)的倾斜表NG项勿忽视,带病变更不可取。
总条数:2746 到第
上滑加载中