• [其他] 【总结】 集群常用操作&&基本知识点
    1、停止集群cm_ctl stopcm_ctl stop -mi 2、启动集群cm_ctl start     起停实例:        cm_ctl stop -n 1 -D /srv/BigData/mppdb/data1/coordinator        cm_ctl start -n 1 -D /srv/BigData/mppdb/data1/coordinator3、主备切换cm_ctl switchover -n 1 -D /srv/BigData/mppdb/data1/slave2 4、均衡整个集群cm_ctl switchover -acm_ctl switchover -n nodeid -D /srv/BigData/mppdb/data2 -q注意是否有catchup:select * from pgxc_get_senders_catchup_time();5、实例修复1)全量build:在任意节点执行:cm_ctl build -n 1 -D /srv/BigData/mppdb/data2/slave1 -b full -t 10800在需要build实例所在节点执行:gs_ctl build -D /srv/BigData/mppdb/data2/slave1 -Z datanode -b full -r 108002)节点修复:gs_replace -t config -h 10-145-255-203                             gs_replace -t start-h 10-145-255-2036、强制升主(慎用):前提:从备实例pg_xlog与base/dummy_standby/是否为空kill pid; sleep 5;gs_ctl notify -M primary -D7、gaussdb重启标志log:Initialize Communication Layer8、查看HA状态信息:receiver_replay_location等gs_ctl query -D  /data1/mppdb/master19、解析xlogpg_xlogdump $xlog文件名10、解析数据库文件:pagehack查看 行存数据页面查看 行存索引页面查看 列存数据页面查看 cu11、sql常用视图:活跃视图:select * from pg_stat_activity where state = 'active';等待视图:select * from pgxc_thread_wait_status; 12、重分布相关视图:1)查看重分布整体进度,重分布结束后会被删除:select * from redis_progress order by name;2)记录了数据库中每张表重分布所耗时间:redis_progress_detail;3)查看需要重分布的表,重分布结束后会删除:pgxc_redistb4)重分布目前所处状态:redis_status13、GaussDB实例退出场景:1)进程被os oom kill:如果能对应上就是os kill了gaussdb的进程(由于内存用的太多,要看看你们配置的max_process_memory是不是太大了)2)进程主动退出:需要查看具体的pg_log,看看退出原因3)进程core:需要配置os core配置,生产core,进一步分析,os message可能会有segment fault打印等信息参考。4)被CMA kill:可以看对应时间点是否有CMA kill实例日志14、符号表路径常用与有GaussDB实例产生core需要解析core文件时加载对应符号表,注意该路径为一个参考实例其中标红部分根据集群版本不同进行灵活变通即可。/opt/huawei/Bigdata/FusionInsight_MPPDB_6.5.1.9/install/FusionInsight-MPPDB-6.5.1/package/MPPDB_ALL_PACKAGE15、磁盘读写策略一般常用于排查磁盘读写慢的问题,一般推荐设置为write-back/write-back-BBU(有的可能会设置成write-through,这种会导致读写较慢不建议设置)查看磁盘读写策略:/opt/MegaRAID/MegaCli/MegaCli64 -cfgdsply -aALL|grep "Current Cache Policy"修改磁盘读写策略为wb:/opt/MegaRAID/storcli/storcli64 /c0/v1 set wrcache=wb附录:判断实例是否在redo:https://bbs.huaweicloud.com/forum/thread-75275-1-1.htmlGaussDB catchup时间长问题排查:https://bbs.huaweicloud.com/forum/thread-75411-1-1.htmlGaussDB某一节点文件描述符耗尽预防:https://bbs.huaweicloud.com/forum/thread-75465-1-1.htmlGaussDB任务hang问题定位:https://bbs.huaweicloud.com/blogs/174795?ticket=ST-657753-ANlEJlpeioQdCGbquWlu9J0W-sso&locale=zh-cn#commentGaussDB磁盘满问题排查 https://bbs.huaweicloud.com/blogs/174806GaussDB 集群状态异常应急案例(全)https://bbs.huaweicloud.com/forum/thread-83202-1-1.html
  • [热门活动] 欢迎来撩GaussDB,赢最高8万元奖励推广
    来这里,您可以获得l  GaussDB互联网应用场景解决方案l  加入云推官,推荐新客下单即获奖励l  最高返利8万元,现金返利不拆分华为自研GaussDB系列重磅发布:最新一代DFV 存储云原生企业级分布式数据库业界领先的存储+网络+鲲鹏算力全栈软硬自研可控政企智能化升级优选1、GaussDB适用哪些场景:GaussDB(for MySQL): 金融行业/政府/运营商/大企业GaussDB NoSQL(多模NoSQL非关系型数据库Mongo、Cassandra、Redis、Influx):游戏、电商、娱乐社交、物联网2、华为云数据库产品已经服务了500+政企客户,助力千行百业。华为云GaussDB成为企业智能升级的数据库首选。更多客户故事点击这里查看3、全场低至5折,限时特惠,机惠不容错过~ 活动直通车活动时间:2020年9月12日至2020年10月31日。4、GaussDB系列产品优势:GaussD(for MySQL)与GaussDB NoSQL在数据安全、弹性扩容、性能、备份恢复方面都有极大的提升有更多问题请咨询华为云数据库小助手,活动直达:https://activity.huaweicloud.com/gaussdb.html
  • [问题求助] GaussDB 200 6.5.1 单节点安装集群失败
    【软件名称】GaussDB 200【软件版本】6.5.1 单节点安装【问题现象】按照6.5.1安装手册进行的,但是初始化集群报错过不去【问题影响】无法启动集群我在论坛看到别人也出现过这个错误,是因为配置DN结点的数量导致的。但是我们DN配置应该是正确的,但是仍然出现了这个错误,找了好久都没有解决错误日志为[2020-09-08 20:23:43]Begin to register default accounts.[2020-09-08 20:23:43]End to register default accounts.[2020-09-08 20:23:43]Initialize service for Service[name: MPPDB, displayName: MPPDB, cluster: test916].[2020-09-08 20:23:43]Initialize role for ROLE[name: MPPDBServer, serviceDisplayName: MPPDB, cluster: test916].[2020-09-08 20:23:43]Initialize roleInstance for MPPDBServer#10.28.187.169@gaussa.[2020-09-08 20:23:58]RoleInstance cleanup success for MPPDBServer#10.28.187.169@gaussa.[2020-09-08 20:24:52]RoleInstance initialization failure [{ScriptExecutionResult=ScriptExecutionResult [exitCode=1, output=ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDfnqxH7hq45PWvFIw7tV1QUeZfg/1X/MI3YaJgqJEmezLlQUhtdTucZjhoPmTRMDYhLfDw1NsE/+FEjoxTUg6F2WZTUv7ZLnUNzFCZPWU3i63Ts3Q8wvkH//6Jr51th1UAIX5J8HADzUT9NrosSVGYQZsUE1oER1Cw1xVbrLSLaggx+MdpI7M7kP9DvNbE0SNwRwHM3lN2MecfCMfrFVUbOM/QCohV47E1IU31wHXGa5CKBcKBMy6YWgQjMPWFqw/kqpzNxoXZt9/TV43nEMQKesh3vKvTsTJJ49iOLYp1thZJE/qrD5n686e+wGsXxH+pyNxkiYJTfJgbcahwLwNb omm@gaussa, errMsg=Warning: Permanently added '10.28.187.169' (ECDSA) to the list of known hosts.scp: /opt/GaussDB200/app/mppdb/gs_install_success: No such file or directoryWarning: Permanently added '10.28.187.169' (ECDSA) to the list of known hosts.Warning: Permanently added '10.28.187.169' (ECDSA) to the list of known hosts.Warning: Permanently added '10.28.187.169' (ECDSA) to the list of known hosts.Warning: Permanently added '10.28.187.169' (ECDSA) to the list of known hosts.Warning: Permanently added '10.28.187.169' (ECDSA) to the list of known hosts.]}] for MPPDBServer#10.28.187.169@gaussa.[2020-09-08 20:24:52]Role initialization failure for Service[name: MPPDB, displayName: MPPDB, cluster: test916].
  • [其他] 【总结】【性能】GaussDB 典型烂SQL特征
    explain可以打印SQL的执行计划,根据执行计划的一些特征,我们可以发现一些明显的烂SQL的特征,具有这些特征的SQL一般都是执行性能很差的,需要调优的。不下推的语句:explain verboseselect distinct on (c1) test1.a c1from test1, test2where test1.a = test2.b;不下推语句会有类似上述的关键字,性能会比较差。在cn节点的pg_log中,可以找到对应语句的不下推的原因。2. 执行计划中有SubPlan:select     1,    (select count(*) from customer_address_001 a4 where a4.ca_address_sk = a.ca_address_sk) as GZCS from customer_address_001 a;如果执行计划中有SubPlan关键字,一般这种SQL的性能都比较差。要想办法改写。在新版本中,优化器可以支持更多场景的这种自动转化,请大家根据实际版本对应的执行计划,根据需要来改写上述逻辑。3. NestLoop + indexScan的误用一般来说, NestLoop + indexScan这种计划适用用两表关联后返回结果集比较小的情况,并且索引是btree索引的场景,但是某些场景下,可能出现优化器估算不准,在并不适合这种场景下,选择了这种计划,就会到执行性能很差。一般处理这种问题,就是设置参数set enable_index_nestloop = off来调优。4. 其他场景,后续补充
  • [热门活动] 【可以回看了】华为云数仓GaussDB(DWS)面向合作伙伴培训系列培训四:日常巡检,常见问题定位三板斧(集群、存储、SQL
    直播回看地址:https://bbs.huaweicloud.com/webinar/100019“全部直播”部分选择技术领域“Gauss AP”可以查看到全部直播内容本次直播是五节课的系列课程,课程计划如下:第四天直播会讲解GaussDB(DWS)的日常巡检,常见问题定位方法(包括网络,集群,存储等)。扫描以下海报二维码即可进入直播间,也可通过链接进入:https://huawei.vhallyun.com/fe/watch/5147【学习福利】想要利用坐地铁,排队等零碎时间来学习专业数据库知识吗?马上扫描华为云AI微信公众号“华为云AI”,带给你不一样的资讯,除了华为云数仓及人工智能相关技术类精品文章外,也可以手机端登陆论坛提问并查看技术分享。GaussDB(DWS)产品主页:https://www.huaweicloud.com/product/dws.html     GaussDB(DWS)产品主页二维码HCIP-GaussDB-OLAP认证介绍与预约考试:https://e.huawei.com/cn/talent/#/cert/product-details?certifiedProductId=195&authenticationLevel=CTYPE_CARE_HCIP&technicalField=PSC&version=1.0
  • [热门活动] 华为云数仓GaussDB(DWS)面向合作伙伴培训系列培训三:补丁、升级与扩容流程,数据库备份与恢复
    直播回看地址:https://bbs.huaweicloud.com/webinar/100019“全部直播”部分选择技术领域“Gauss AP”可以查看到全部直播内容本次直播是五节课的系列课程,课程计划如下:第四天直播会讲解GaussDB(DWS)补丁、升级与扩容流程,数据库备份恢复的技术。扫描以下海报二维码即可进入直播间,也可通过链接进入:https://huawei.vhallyun.com/fe/watch/5146【学习福利】想要利用坐地铁,排队等零碎时间来学习专业数据库知识吗?马上扫描华为云AI微信公众号“华为云AI”,带给你不一样的资讯,除了华为云数仓及人工智能相关技术类精品文章外,也可以手机端登陆论坛提问并查看技术分享。GaussDB(DWS)产品主页:https://www.huaweicloud.com/product/dws.html     GaussDB(DWS)产品主页二维码HCIP-GaussDB-OLAP认证介绍与预约考试:https://e.huawei.com/cn/talent/#/cert/product-details?certifiedProductId=195&authenticationLevel=CTYPE_CARE_HCIP&technicalField=PSC&version=1.0
  • [其他] 【OS】关于一个ssh登陆引发节点cpu使用率高的问题
    问题描述:某局点的的其中一个节点,周期性(20s)出现cpu使用率100%情况,而占用cpu的任务是同时被拉起的大量的lspci操作观察任务树发现,该任务的父进程关系非常奇怪父进程和子进程基本是八竿子打不着的关系本地排查了1、ssh -vvv以及其他尝试构造该场景,未发现2、远端通过ssh连接到本服务器,然后执行lspci3、查看om fim监控脚本,无相关lspci调用,排除。在排除了几个可疑点之后,再次观察状态树,怀疑是ssh登录后脚本导致,最终发现,该命令实际是通过登录后的/etc/profile中,拉起了lspci根因分析:由于redhat在ssh登陆时,会自动加载/etc/bashrc脚本,该脚本会将/etc/profile.d/ 目录下所有的sh脚本加载一遍,系统的qt(一个开源的桌面开发工具)自带的环境变量检查里面会调用lspci解决方案:目前qt工具在我们系统中用不上,直接将所有节点的/etc/profile.d/qt*.sh的脚本注释掉问题解析:当前Gaussdb内部的一些检测和运维的原理都是依赖于'ssh hostname cmd'这种方式来进行远程控制,因此对于ssh登陆效率和性能本身有一定的依赖,建议系统安装时采用最小方式安装,对于无关的应用,建议不要安装在服务器上
  • [其他] 【集群恢复】集群状态长时间显示catchup(二)
    【机制说明】GaussDB实例catchup分为以下两种:1)数据页catchup:一般出现在备机故障一段时间修复后重新连主时,从主机追赶落后数据。2)日志catchup:一般常见于带索引导入时主机产生过多xlog文件,备机来不及接收出现。对于以上catchup过程慢一般没有太多应对措施,在此我们主要讨论catchup时间过长,此时查看日志排除是否产生死锁造成catchup永远执行不完。【问题描述】查看集群状态长时间(超过24小时甚至更长时间)有实例处于catchup状态【问题分析】1、查看主DN实例是否有以下日志:2、出现该问题是由于catchup与dml语句抢锁导致,此时kill正在执行的dml语句即可,或停止一段之间业务让catchup做完,不然可能会与新进来的业务一直抢锁导致catchup无法结束。
  • [热门活动] 【可以回看了~】华为云数仓GaussDB(DWS)面向合作伙伴培训系列培训二:负载管理及性能调优
    直播回看地址:https://bbs.huaweicloud.com/webinar/100019“全部直播”部分选择技术领域“Gauss AP”可以查看到全部直播内容本次直播是五节课的系列课程,课程计划如下:第三天直播会深入讲解事务与锁机制管理,资源负载管理,性能调优,安全与权限设计,非常具有实操性。扫描以下海报二维码即可进入直播间,也可通过链接进入:https://huawei.vhallyun.com/fe/watch/5145【学习福利】想要利用坐地铁,排队等零碎时间来学习专业数据库知识吗?马上扫描华为云AI微信公众号“华为云AI”,带给你不一样的资讯,除了华为云数仓及人工智能相关技术类精品文章外,也可以手机端登陆论坛提问并查看技术分享。GaussDB(DWS)产品主页:https://www.huaweicloud.com/product/dws.html     GaussDB(DWS)产品主页二维码HCIP-GaussDB-OLAP认证介绍与预约考试:https://e.huawei.com/cn/talent/#/cert/product-details?certifiedProductId=195&authenticationLevel=CTYPE_CARE_HCIP&technicalField=PSC&version=1.0
  • [其他] 【总结】如何判断实例redo进度
    前言: GaussDB经常会碰到实例长期处于need repair状态,kill该实例或者手动拉起该实例一直处于need repair状态,此时可能该实例可能在做redo,完成后即可变成normal状态。按照以下步骤判断该实例是否在做redo。方式一:快速判断,查看实例堆栈:ps -ef|grep xxxx |grep -v grep|awk '{print $2}'|xargs gstack ,存在redo相关线程即能确定该实例正在redo。注:将xxx替换为对应实例路径方式二:连接该DN查看redoLSN位置是否有变化:select pg_last_xlog_replay_location();连续查看该值若有变动那么该实例正在做redo查看还有多少xlog需要redo:进入该实例目录下pg_xlog路径查看最新xlog lsn位置,ll -thr|tail -n 10根据以上查询结果目前redo到8F5,最新xlog为8F9,差一个数xlog大小为4G,此时还有16G(4*4)的xlog未同步方式三:该方式适合主备实例正常情况下使用,查看正常实例同步及备机redo进度,gs_ctl query -D 主实例目录主机最新xlog为8EE,目前备机redo位置为8E8,目前还有24Gxlog未redo方式四:lsof -p $pid|grep 00000*查看目前该实例 redo到那个xlog文件附:解析xlog文件查看需要redo的内容:1)解析详细内容:pg_xlogdump xlog_file解析该文件发现有较多truncate操作需要进行redo。2)统计xlog文件信息:pg_xlogdump -z xlog_file
  • [生态空间] 【TD迁移GS】数据一致性校验比对
    背景> 数据库数据迁移过程,特别是迁移过程中,双方数据双加载过程中,如何校验数据加工一致时,引出了数据一致性比对;> 本节只是提供校验的方法,供大家探讨;具体解决方案可联系楼主。数值型> 除了本身精度不确定类型,双方用法一致,可以直接sum聚合;时间型>时间可以分为time、date(TD兼容模式下日期格式)、timestamp>实现思路,均将时间信息转换成数字,再进行sum聚合;time统一转成0点开始的时间秒;>TD实现sel extract(hour from time'12:12:12')*3600+extract(minute from time'12:12:12')*60+extract(second from time'12:12:12');>GS实现select extract(epoch from '12:12:12'::time);date统一转成1970年元旦开始的天数;>TD实现sel (date'2020-08-19'-date'1970-01-01')*86400;>GS实现select extract(epoch from '20200819'::date);timestamp统一转成1970年元旦开始的秒数;>TD实现sel ( (timestamp'2020-08-19 12:12:12'(date))-date'1970-01-01')*86400     +extract(hour from timestamp'2020-08-19 12:12:12')*3600     +extract(minute from timestamp'2020-08-19 12:12:12')*60     +extract(second from timestamp'2020-08-19 12:12:12');>GS实现select extract(epoch from '2020-08-19 12:12:12'::timestamp);字符型> 和字符集强相关,目前只支持英文、数值、半角符号的checksum聚合;> 主要指char/varchar类型;当然其它类型可显式或隐式转为格式一致的字符型;> 比对实现机制,计算单个字符串的md5值,再经过二次异或加工,转成数字,就可以进行sum聚合;> TD实现replace function xor_md5(inpt varchar(32000)) returns bigint language sql deterministic contains sql sql SECURITY DEFINER collation INVOKER INLINE TYPE 1 return  bitxor( bitxor ( bitxor ( cast(from_bytes(to_bytes(translate(substr(hash_md5(inpt),1,8) using latin_to_unicode),'base16'),'base10') as bigint) ,cast(from_bytes(to_bytes(translate(substr(hash_md5(inpt),9,8) using latin_to_unicode),'base16'),'base10') as bigint)) ,cast(from_bytes(to_bytes(translate(substr(hash_md5(inpt),17,8) using latin_to_unicode),'base16'),'base10') as bigint)) ,cast(from_bytes(to_bytes(translate(substr(hash_md5(inpt),25,8) using latin_to_unicode),'base16'),'base10') as bigint)); select sum((xor_md5(colA))::dec(38,0)) as chksum from table_a;>GS实现create function xor_md5(text) returns bigint immutable as $$ select ('x'||lpad(substr(md5($1),1,8),16,'0'))::bit(64)::bigint       # ('x'||lpad(substr(md5($1),9,8),16,'0'))::bit(64)::bigint       # ('x'||lpad(substr(md5($1),17,8),16,'0'))::bit(64)::bigint      # ('x'||lpad(substr(md5($1),25,8),16,'0'))::bit(64)::bigint; $$ language sql; select sum(xor_md5(colA)(dec(38,0))) as chksum from table_a;若TD字符集是LATIN存GBK(国内客户常见),可以采用下述自定义函数替换:create function xor_md5(text) returns bigint immutable as $$ select ('x'||lpad(substr(md5(convert_to($1,'GBK')),1,8),16,'0'))::bit(64)::bigint       # ('x'||lpad(substr(md5(convert_to($1,'GBK')),9,8),16,'0'))::bit(64)::bigint       # ('x'||lpad(substr(md5(convert_to($1,'GBK')),17,8),16,'0'))::bit(64)::bigint      # ('x'||lpad(substr(md5(convert_to($1,'GBK')),25,8),16,'0'))::bit(64)::bigint; $$ language sql; select sum(xor_md5(colA)(dec(38,0))) as chksum from table_a;
  • [实践系列] GaussDB(DWS) 【生成随机字符串的方法】
    CREATE FUNCTION random_str(length integer) RETURNS character varying    LANGUAGE plpgsql IMMUTABLE NOT SHIPPABLE    AS $_$DECLAREresult varchar;BEGINselect array_to_string(array(select substring('0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' FROM (ceil(random()*62))::int FOR 1) FROM generate_series(1, $1)),'a','null') INTO result;return result;END$_$;
  • [实践系列] GaussDB(DWS) 【in 与join 在遇到重复数据时的区别】
    --创建测试表并插入数据create table t1(a int,b varchar,c varchar);insert into t1 values(1,'张学友','aaaaaaaaaa'),(2,'刘德华','bbbbbbbbbbbbb'),(3,'郭富城','ccccccccccccc'),(4,'黎明','ddddddddddddd'),(5,'周润发','eeeeeeeeeeeeeee'),(6,'吴彦祖','fffffffffffff');create table t2(a int,b varchar,c varchar);insert into t2 values(1,'张学友','aaaaaaaaaa'),(2,'刘德华','bbbbbbbbbbbbb'),(3,'郭富城','ccccccccccccc'),(3,'郭富城','ccccccccccccc'),(2,'刘德华','bbbbbbbbbbbbb');执行查询1(join):select * from t1,t2 where t1.a=t2.a;执行查询2(in):select * from t1 where t1.a in (select t2.a from t2);
  • [其他] 【总结】【资源管理】使用技巧-怎么针对一个用户,进行并发数的限制
        现网经常遇到一种情况,想限制一个用户的并发量,不要让他并发太大,把所有的资源都占满了;    GaussDB(DWS)就支持这种操作。确切说,GaussDB(DWS)支持两种并发控制的操作:    1)第一种与内存相关,当给你的用户分配了一定内存时,那么会根据内存的使用情况去限制并发,假如内存使用达到了阈值,那么实际的并发量也会受到限制,达到阈值后的语句会进入排队状态。可以根据pgxc_stat_activity中的enqueue字段进行判断,语句当前是在什么状态。    2)第二种可以在不理会内存的情况下,只计量并发数量,达到并发数量之后,就会让语句进行排队。这里介绍下单用户控制并发的设置方法:1.在所有节点创建好控制组gs_ssh -c "gs_cgroup -c -S class_a"gs_ssh -c "gs_cgroup -c -S class_a -G workload_a"2.创建业务资源池create resource pool p1 with (control_group="class_a:workload_a");alter resource pool p1 with (active_statements=10,mem_percent=0);3.关联用户与该资源池ALTER USER testuser RESOURCE POOL 'p1';实例中的资源池,控制组,用户名称等可以随意修改。
  • [应用案例] GaussDB(DWS)资源管控方案技术实操分享
       项目交付中可能会遇到同时包含核心交易(OLTP)和报表分析(OLAP)的混合业务场景,其中报表分析类业务复杂度高,消耗大量系统资源,但实时性要求较低,而核心交易类业务并发较大,多为简单事务处理,对实时性要求高。当系统处于业务高峰时,报表分析类业务并发操作会加剧系统负载,且长时间占用资源无法释放,最终可能导致整体性能裂化,实时性要求较高的核心交易类业务因资源争抢而无法得到响应,从而影响客户整体体验。详情请点击博文链接https://bbs.huaweicloud.com/blogs/174637
总条数:2746 到第 页
上滑加载中