• 【云享问答】第6期:如何筑造数据安全边界
    当前AI技术的快速发展,大模型、大数据正在加速对海量多样化数据的应用。数据已经成为核心资产,而数据安全和隐私保护的重要性也日益凸显。数据脱敏作为数据安全管控体系的关键环节,能够有效地保护敏感数据的安全。为了满足开发者对于数据脱敏的需求,GaussDB(DWS) 动态脱敏功能应运而生。本期【云享问答】通过这10个问题,带你全方位了解GaussDB(DWS) 动态脱敏功能及效果。💬 1、什么是数据脱敏?数据脱敏是通过屏蔽敏感数据来保护数据安全的一种方法。它可以将敏感数据变形,例如身份证号、手机号、客户姓名、邮箱地址等。数据脱敏分为静态数据脱敏和动态数据脱敏两种。GaussDB(DWS)提供列级别的数据脱敏(Dynamic Data Masking)功能,GaussDB (DWS)数据脱敏功能,基于SQL引擎既有的实现框架,在受限用户执行查询语句过程中,实现外部不感知的实时脱敏处理。💬 2、数据脱敏能解决什么问题?数据脱敏能力对于用户具有多重重要价值。它不仅能够消除暴露个人敏感数据的风险,确保个人隐私安全,还能助力企业遵守CPRA、GDPR、HIPAA等隐私法规,避免因违规而引发的法律风险。同时,数据脱敏技术在处理数据时能够保持数据的一致性和可用性,确保脱敏后的数据依然能够支持业务运营和决策分析。此外,通过脱敏处理,还可以降低数据在高效共享过程中的风险,防止敏感信息被恶意利用,从而保护企业免受网络攻击和数据泄露的威胁。💬 3、脱敏策略是什么?脱敏策略(Redaction Policy)在数据安全管理中扮演着至关重要的角色。脱敏策略是与数据库中表对象是一一对应的。一个完整的脱敏策略通常由三个关键部分组成:表对象、生效条件以及脱敏列与脱敏函数的对应关系。表对象指定了策略应用的数据库表。生效条件则是一个布尔表达式,它决定了何时应用脱敏规则。脱敏列与脱敏函数的对应是脱敏策略的核心。不同的字段根据其存储数据的特性和敏感性可以采用不同的脱敏函数。当且仅当生效条件为真时,查询语句才会触发敏感数据的脱敏,而脱敏过程是内置在SQL引擎内部实现的,对生成环境用户是透明不可见的,既保障了数据安全,又不干扰用户的数据访问。💬 4、在实际开发过程中,数据脱敏怎么用?以DWS为例,在创建脱敏策略时,需要先确定受限制的用户角色,识别和梳理具体业务场景的敏感字段,然后确定脱敏列需要绑定的脱敏函数,最后构造策略创建的语句并执行,从而预制好脱敏策略。常见的使用函数语句实现脱敏效果💬 5、数据脱敏应用过程中,如何做到数据库内可算仅库外不可见?数据库内要求原始的敏感数据能够参与加工计算,仅在出库的时刻敏感数据才会被脱敏处理。例如投影列表达式、投影列函数、聚集函数、过滤条件、分组条件、子查询位置投影列表达式等,需要原敏感数据直接参与加工计算。在表查询、视图查询、COPY查询、GDS外表导出等场景触发时会进行数据脱敏。可算不可见功能有一个前置的条件,需要打开开关enable_redactcol_computable=on!。💬 6、GaussDB(DWS)的动态脱敏功能是如何进行数据保护的?GaussDB(DWS)的动态脱敏引擎与底层系统紧密配合,高效、安全、可靠地处理数据。其直观的DDL语法界面,使用户能轻松配置、调整脱敏策略,灵活应对不同场景。系统不仅内置多种常见脱敏方法,还支持用户自定义脱敏函数,满足个性化需求。在保障数据安全的基础上,该引擎确保脱敏数据的高可用性,维持业务价值。同时,通过严格的权限和访问控制,仅授权用户可访问敏感数据,全面守护数据的安全与隐私。第三方脱敏工具多为外挂式,仅支持静态脱敏,无法实现实时动态处理。相比之下,GaussDB(DWS)的内置脱敏功能更加透明、高效。💬 7、在GaussDB(DWS)中,如何快速配置和使用动态脱敏功能,并支持非固定格式的数据脱敏?GaussDB(DWS)提供DDL语法支持用户快速配置脱敏策略,使用无特殊要求,原SELECT语句即可触发。GaussDB(DWS)对于常规数据类型均支持,且提供用户自定义脱敏函数,可以对更多场景支持更灵活脱敏效果。💬 8、GaussDB(DWS)是否支持跨数据表传递脱敏数据,传递过程中是否继承原脱敏策略?在GaussDB(DWS)的库内可算库外不可见场景下,由于参与数据运算的是原始数据,故DML语句执行过程,写入/更新目标表都是原始数据去更新的,故需要引入脱敏策略继承机制,分析语句中子查询的脱敏信息,并继承到目标表中,此场景即涉及脱敏策略的继承。💬 9、在应用GaussDB(DWS)过程中,如何保证数据脱敏的实时性?为了确保实时性,GaussDB(DWS)采用动态数据脱敏方式。动态数据脱敏,是指数据查询过程边输出边脱敏,策略定制的脱敏函数发生变化,查询的脱敏效果也实时更新。这就意味着DWS在数据查询过程中,数据会边输出边脱敏。这种并行交互的方式最大限度地减少了性能损失,使得实时性得以保证。根据提供的信息,性能劣化在10%以内是可以接受的。因此,各种场景下的实时性需求都能得到满足。💬 10、针对不同的用户或角色,GaussDB(DWS)能否有不同的脱敏策略?GaussDB(DWS)数据脱敏含有三要素:脱敏策略应用的表对象、脱敏字段-脱敏函数对、脱敏生效条件,此三部分信息通过REDACTION POLICY语法承载。WHEN表达式子句可以传递生效条件,针对不同的用户或角色去判断。更多关于GaussDB(DWS)产品技术解析、数仓产品新特性的介绍,请关注GaussDB(DWS)论坛,技术博文分享、直播安排将第一时间发布在:GaussDB(DWS)论坛 。
  • [热门活动] 全国高校计算机类课程能力提升高级研修班(2024年第一期)在东莞召开--“云数据仓库GaussDB(DWS)”课程 实验地址分享
    2024年1月23日至24日,全国高校计算机类课程能力提升高级研修班(2024年第一期)在广东省东莞市松山湖召开,来自全国119所高校的200多位教师参加了此次培训。本次研修班由教育部高等学校计算机类专业教学指导委员会和全国高等学校计算机教育研究会主办、清华大学出版社与华为公司共同协办。【全体合影】本期高级研修班师资团队由高校专家及工业软件云专家、华为云GaussDB(DWS)数据仓库专家、华为昇腾CANN生态首席专家、OpenHarmony社区专家、海思高校计划专家进行了详细的课程讲解与实践指导。《云数据仓库GaussDB(DWS)》的课程培训,由华为云数仓GaussDB(DWS)的三位资深专家担任讲师:首席架构师曾凯、架构师周孟韬和SQL优化首席技术专家李茂增。此次培训吸引了来自23所高校的30位教师共同参与学习。【云数据仓库GaussDB(DWS)课程合影留念】曾凯老师从数据仓库发展史及未来趋势出发,展望了数仓发展的未来,介绍了GaussDB(DWS)云原生技术能力及优势。周孟韬老师介绍了存储引擎、事务处理、HStore表原理及应用实践、容灾与细粒度备份技术,通过原理的深度解读和实践演示,帮助各位老师快速入门华为云数仓GaussDB(DWS)。课堂上还为大家提供GaussDB(DWS)的云上实验,通过实践操作引导老师们体验GaussDB(DWS)云原生数仓,体验Serverless架构下湖仓一体、存算分离等高级特性。李茂增老师通过GaussDB(DWS)分布式SQL优化技术及执行引擎课程,向各位老师介绍了数仓的核心技术原理,解读如何通过SQL优化技术提升数仓性能,帮助老师们将GaussDB(DWS)产品技术在理论与实践两个层面融入到课程教学中。本次研修班成为了高校教师与企业间交流的桥梁,突出了校企合作的重要性。众多参会教师一致认为,这是深入了解国家战略和企业需求的宝贵机会,对于提升教学质量和人才培养至关重要。理论与实践的结合,以及来自行业专家的深入讲解,对于日常教学安排和产教融合案例的分享,极大地丰富了参会老师的教学方法和视野。华为致力于继续发掘和释放产业技术的潜力,加速产教融合的协同发展。公司将深耕于高校人才培养领域,通过更开放、多元化的支持方式,帮助高校加强基础教育,扩展技术视野,并培养出更多优秀的专业人才。通过这样的合作和共同努力,期待未来高校能够为社会培育出具有创新精神和实践能力的计算机行业新星。数据仓库GaussDB(DWS)行业人才培养是数据仓库生态建设重要的一环,目前GaussDB(DWS)已上线工作级开发者认证,赋能1500+用户,推出50+场线上培训课程、18个免费沙箱实验,持续为数据仓库行业人才赋能。未来,华为云数据仓库GaussDB(DWS)将继续坚守初心,为数据仓库行业培养更多高质量人才。点击链接,了解数据仓库工作级开发者认证。活动剪影videovideo沙箱实验实验名称链接快速入门数据仓库服务GaussDB(DWS)Link使用DWS导入MRS-Hive数据源实现融合分析Link使用GaussDB(DWS)实现零售业经营状况多维度查询分析Link使用Java开发数据仓库服务GaussDB(DWS)Link数据仓库服务GaussDB(DWS)权限管理Link如何实现GaussDB(DWS)性能调优Link体验GaussDB(DWS)云原生数仓-存算分离Link体验GaussDB(DWS)云原生数仓-湖仓一体Link
  • [迁移系列] 【PG迁移】移动json串累积求和
    示例drop table if exists tmp_ta; create temp table tmp_ta( gender char, type char, price text, number text, sequence int ); insert into tmp_ta values('M','O', 1,20, 1); insert into tmp_ta values('M','M', 2,40, 2); insert into tmp_ta values('F','O', 3,30, 3); insert into tmp_ta values('F','M', 4,50, 4); insert into tmp_ta values('M','M', 4,60, 5); insert into tmp_ta values('F','O',4,40, 6);获得效果gendertypepricenumberjsonb_stringsequenceFO330{"3": "30"}3FM450{"3": "30", "4": "50"}4FO440{"3": "30", "4": "40"}6MO120{"1": "20"}1MM240{"1": "20", "2": "40"}2MM460{"1": "20", "2": "40", "4": "60"}5采用SQL示例select gender, type, price, number ,jsonb_object_agg(price,number) over(partition by gender order by sequence),sequence from tmp_ta;对应效果说明jsonb_object_agg聚合函数配合over进行移动聚合,可以实现相关json的key去重、以及累加聚合;若需要实现机械json聚合(不根据key去重),可以采用jsonb_agg及jsonb_build_object拼接select gender, type, price, number ,jsonb_agg(jsonb_build_object(price,number)) over(partition by gender order by sequence),sequence from tmp_ta;
  • [应用案例] 【案例】gsql指定-h报错:wrong version number,remote datanode
    一、现象1、cn实例目录下cacert.pem、server.crt、server.key、server.key.cipher、server.key.rand的权限被修改过。不是6002、gsql连接指定-h报错wrong version number,remote datanode。二、问题原因由于证书权限的改变导致ssl认证异常三、解决办法将所有cn实例下的cacert.pem、server.crt、server.key、server.key.cipher、server.key.rand文件权限修改回默认权限chmod 600 文件名​
  • [性能调优] 3000万的大表如何分页查询
    我们有一个3000千万的大表,表中没有主键,也没有ID列,每次取100万条,并且不能重复,所以limit 就不能使用。目前的方法是使用开窗口函数row_number() over( order by xxx )生成一个伪列进行数据过滤(where  rownum >xxxxx and rownum <xxxxx),每取一次就重新生成伪列,直到把3000万数据取完,我感觉这样效率比较低,在分布式中没有快速分布的方法。
  • [生态工具] datax同步问题
    通过DataX实现Oracle到dws的数据互相迁移1. 抽取从oracle读数据写进dws.Json文件配置读使用oraclereader,写入使用postgresqlwriter从dws读数据写进oracleJson文件配置读使用postgresqlreader,写入使用oraclewriterDatax任务脚本参数并发数32:2. 迁移速率:迁移过程中datax Speed速率每秒40k~60k,速率太低。客户期望至少每秒2万行,4MB的速率源端 oralce并没有呈现出io,cpu,内存压力。优化:按照常规的datax优化参数方法,进行channel,record,byte参数不同数值设置,进行测试速率,速率没得到提升。问题如何datax的同步速率提升上去?把官方是否提供专门的dws读写插件?
  • [运维管理] dws用pg_relation_filepath只能查到cn的路径,如何查到对应dn里面的数据文件
    dws里面看到协调节点的数据文件如何对应到master里面的数据文件呢。用pg_relation_filepath只能查到cn的路径
  • [全景传送门] GaussDB(DWS)开发者平台 来咯!| 逛逛DWS宝藏库
    GaussDB(DWS)开发者一站式平台,旨在为GaussDB(DWS)的开发者们提供最全面的信息资讯。精品技术文章、最佳实践、直播集锦、热门活动、海量案例、智能机器人,海量资源一站式集成,一起来看看如何用好DWS开发者平台吧!地址:cid:link_0📍第一站:知识happy站台板块:【精品技术博文】【直播公开课】DWS出品,必属精品!这里有海量技术文章、公开课资源,全都免费对您开放。您可按需检索感兴趣的内容,常看常新,还有更多资源持续上新中哦~📍第二站:DWS游园会板块:【数据分析实验】【开发者活动】热门沙箱实验等你体验,在这里您可以一键创建数据仓库,实践和验证典型场景,帮助您快速体验华为云数据仓库服务。DWS活动日历,预约直播、预约参与线上、线下活动,与DWS专家互动,有机会赢惊喜好礼哦~📍第三站:问题百事通板块:【案例库】【智能机器人】【问题求助板块】使用中遇到问题?不用担心~我们准备了超多超实用的故障场景解决方案,包括集群问题、数据库链接问题、权限问题…已覆盖大部分使用场景。还可以一键直达问题求助渠道:智能机器人小D--能处理SQL语法、特性知识、常见Top问题、解决方案需求等咨询问题;论坛问题求助发帖--真人专家在线答疑。
  • [运维管理] 在FM界面创建HDFS用户界面显示为空
    如图,已经创建了20个HDFS用户,再次进行创建的时候页面显示为空,无法继续创建,为什么无法创建,是创建数量有限制还是因为创建过多导致页面刷新失败。
  • GaussDB(DWS)单语句执行报错ERROR: Failed to send internal begin to Datanodes
    【问题现象】DWS集群业务insert语句产生报错ERROR: Failed to send internal begin to Datanodes dn_6021_6022【问题分析】根据报错语句的线程ID:281401921239248 在1月14日的CN日志中查找,没有发现在报错语句之前的其他记录检查对应的DN日志,在CN报错的相同时间中显示未找到匹配进程​​​​​​​​​​​​​​发现服务器在1月5日重启过,21:55分DN重启并触发主备倒换,22:51分主实例恢复,备升主,集群做switchover主备均衡,​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​追溯报错语句线程ID,发现1.5集群重启时有4次清理残余连接的日志记录,1.5-1.11报过几次reset handle xmin, 随后在1月14日直接报DN连接错误直接查询残余连接,即查询的连接对应不存在的DN重启前的线程。发现残余连接50+:​​​​​​​select count(*) from pg_pooler_status where remote_pid in (select tid from pgxc_thread_wait_status);select count(*) from pg_pooler_status;select * from pg_pooler_status where remote_pid not in (select tid from pgxc_thread_wait_status);​​​​​​​​​​​​​​说明DN重启后还有未清理掉的连接,判断语句报错的原因为1月5日重启后CNDN之间的连接断开,但是连接断开后,清理失效连接的操作为完成;在1月14日业务复用该残余连接,造成语句报错。尽管日志中有清理连接的记录,但是从残余连接的查询结果来看,清理连接的实际过程并未完成。【规避方法】方案一、清理一遍所有业务连接,后续每次DN重启后得执行方式:CLEAN CONNECTION TO ALL FOR DATABASE xxx; --xxx为业务库影响:被清理的业务的连接会断开;方案二、用pg_pool_validate()清理CN上多余线程方式:执行SELECT * FROM pg_catalog.pg_pool_validate(true, ' '); (单引号里面为空格)主备切换或主备均衡后,每个CN均执行,不区分库;执行select * from pg_pooler_status where remote_pid not in (select tid from pgxc_thread_wait_status); 检查残余线程,如果查询结果为空说明当前无残余连接;​​​​​​​             影响:该函数仅清理残余连接,对业务无影响
  • [集群异常] GaussDB(DWS)【OS】集群告警出现大量D/Z进程
    D/Z告警排查一、D/Z进程解释D进程:什么是D进程:D 是 Disk Sleep 的缩写, 也就是不可中断状态睡眠(Uninterruptible Sleep) ,一般表示进程正在跟硬件交互,并且交互过程不允许被其他进程或中断打断。为什么不能被中断:不可中断,指的并不是CPU不响应外部硬件的中断,而是指进程不响应异步信号。绝大多数情况下,进程处在睡眠状态时,总是应该能够响应异步信号的。而内核的某些处理流程是不能被打断的。如果响应异步信号,程序的执行流程中就会被插入一段用于处理异步信号的流程(这个插入的流程可能只存在于内核态,也可能延伸到用户态),于是原有的流程就被中断了。D进程的成因:D状态进程通常是由于IO末能及时得到满足,如果进程正在等待的IO没有及时完成或响应,那么就会在ps等输出中看到,而一旦IO完成,该进程就可以继续运行,D 状态自行消失。如果D状态一直无法得到IO满足,可能是外设本身出了故障,也可能是比如挂载的远程文件系统已经不可访问(由down掉的NFS服务器引起的D状态),kill -9 等命令都无法将其杀掉。这种情况下,除了等待IO恢复,或是重启系统,在系统层面并没有办法删除这些进程。D进程的危害:D进程持续存在PID一直未变化,可能引发服务器load负载高,CPU占用低的现象,导致服务器hang或者持续卡顿。Z进程:什么是Z进程Z 是 Zombie 的缩写, 它表示僵尸进程, 也就是进程实际上已经结束了,但是父进程还没有回收它的资源(比如进程的描述符.PID 等)。Z进程的成因:子进程先于父进程退出,子进程的用户空间被系统释放。但是这时,父进程没有读到子进程的返回代码,不知道子进程退出了。因为父进程没有读到子进程的返回代码,所以系统故意残留了子进程内核空间里的部分PCB,导致子进程没有被回收完全,从而产生了僵尸态进程。为什么系统会残留部分PCB:这个子进程是父进程创建的,这个子进程咋死的父进程总得知道啊。正巧的是,子进程的退出原因就放在其PCB里面,所以当父进程没有读到子进程的返回代码时,系统就会留下该子进程的部分PCB,以供其父进程来读取子进程的退出原因并回收该PCB,回收完成后,子进程也会退出僵尸态什么是PCB:PCB(process control block),进程控制块,是我们学习操作系统后遇到的第一个数据结构描述,它是对系统的进程进行管理的重要依据,和进程管理相关的操作无一不用到PCB中的内容。一般情况下,PCB中包含以下内容: (1)进程标识符(内部,外部) (2)处理机的信息(通用寄存器,指令计数器,PSW,用户的栈指针)。 (3)进程调度信息(进程状态,进程的优先级,进程调度所需的其它信息,事件) (4)进程控制信息(程序的数据的地址,资源清单,进程同步和通信机制,链接指针)Z进程的危害:由于僵尸进程并不做任何事情, 不会使用任何资源也不会影响其它进程, 因此存在僵尸进程也没什么坏处。不过由于进程表中的退出状态以及其它一些进程信息也是存储在内存中的,因此存在太多僵尸进程有时也会是一些问题。二、排查是否存在D/Z进程1.获取告警实例信息登录FIM界面->运维->告警->对象, 获取告警实例信息2.登录告警节点, 获取D/Z进程号和类型信息ps -elf | grep -v "\[thread_checkio\]" | awk 'NR!= 1 {print $2, $3, $4}' | grep omm | awk -F' ' '{print $1, $3}' | grep -E "Z|D" 三.定位手段3.1 D/Z进程偶现并自行消失:如果D/Z进程存在,过一会就消失,或者查到的D/Z进程经常更换pid,这种现象正常D进程​ D状态进程通常是由于IO末能及时得到满足,如果进程正在等待的IO没有及时完成或响应,那么就会在ps等输出中看到,而一旦IO完成,该进程就可以继续运行,D 状态自行消失。使用DWS时,批量的往数据库导入数据,如果导入的数据量大到OS脏页回写的速度赶不上写入的速度时,并且用户刷脏页的阈值到达,用户进程会需要主动刷脏页。OS脏页超过20%时,用户调write也需要主动的刷脏页,就会看到进程处于D状态,直到脏页水位下降到10%以下。另:操作系统脏数据相关参数调整命令(用于解决脏数据引起的操作系统内核卡顿,导致dn主备切换):相关参数:#dirty_background_ratio控制脏页占可用内存(空闲+可回收)的百分比,达到dirty_background_ratio时,内核的flush线程开始回写脏页。默认值: 10 vm.dirty_background_ratio = 10 #dirty_background_bytes控制脏页内存数量,超过dirty_background_bytes时,内核的flush线程开始回写脏页 vm.dirty_background_bytes = 0 vm.dirty_ratio = 20 #控制脏页所占可用内存百分比,达到dirty_ratio时,执行磁盘写操作的进程自己开始回写脏数据。默认值:20 #控制脏页内存数量,达到dirty_bytes时,执行磁盘写操作的进程开始回写脏页 vm.dirty_bytes = 0 #控制周期回写进程的唤醒时间,默认值为500,单位是厘秒,实际内核中是*10使用,即5s,也就是每隔5秒唤醒脏页回写进程,降低这个值可以把尖峰的写操作削平成多次写操作 vm.dirty_writeback_centisecs = 50 #控制dirty inode实际回写的等待时间,默认值是3000,即30s,只有当超过这个值后,内核回写进程才会将dirty数据回写到磁盘 vm.dirty_expire_centisecs = 6000推荐修改操作:#减少脏数据缓存相关参数 sysctl -w vm.dirty_ratio = 10 sysctl -w vm.dirty_background_ratio = 5 sysctl -p Z进程​ 状态表示进程正在终止或已经被终止,这时的进程可能正在进行一些清理工作或已经被完全终止。如果进程正在进行清理工作,其gstack、maps和stack信息可能仍然存在并可以被查看。但是,如果进程已经被完全终止,那么这些信息可能已经消失或无法获取。3.2 D/Z进程不消失:D进程应急处理:如果确认是D影响业务,需要重启服务器释放D进程排查是否是D进程影响的手段:1)使用 pidstat 查看这些进程的磁盘读写情况,如下:# -d 展示 I/O 统计数据,-p 指定进程号,间隔 1 秒输出 3 组数据 pidstat -d -p XXX 1 3 iostat -xm 1 3可以看到,这四个进程目前存在大量磁盘读写。2)查看其余资源情况top -p xxx如果看到load在不断增加,而进程占用CPU不高,但是IO压力很大,可以判定为该D进程导致,持续不能满足IO且大范围影响业务,建议立即重启服务器。Z进程应急处理:既然僵尸进程是因为父进程没有回收子进程的资源而出现的,那么,要解决掉它们,就要找到它们的根儿,也就是找出父进程,然后在父进程里解决。# -a 表示输出命令行选项 -p 表PID -s 表示指定进程的父进程 pstree -aps XXXkill -9 父进程即可D进程根因定位:方法一:# 记录性能事件,等待大约15秒后按 Ctrl+C 退出 $ perf record -g # 查看报告 $ perf report检查对应进程堆栈信息方法二:从RHEL5.5 版开始,RHEL包含一个内核线程,用于监视停留在D状态超过指定超时时间的进程。默认情况下,超时时间为120秒,可以使用内核参数 kernel.hung_task_timeout_secs修改或禁用它。当检测到此类进程时,该内核线程将有关该进程的信息(包括其内核堆栈跟踪)转储#超时时间,默认值120 echo '120' > /proc/sys/kernel/hung_task_timeout_secs #是否在检测到hung后panic,默认值0 --可选,不推荐修改 echo '0' > /proc/sys/kernel/hung_task_panic 进入 /var/log/messages查看堆栈方法三:使用sysrq工具将有关进程的信息发送到/var/log/messages# 启用sysrq的功能: echo 1 > /proc/sys/kernel/sysrq # 转储处于不可中断(阻塞)状态的任务。 echo w > /proc/sysrq-trigger # 将当前任务列表及其信息转储到您的控制台。 echo t > /proc/sysrq-trigger # 显示所有活动 CPU 的堆栈回溯。 echo l > /proc/sysrq-trigger这会将任务和线程信息转储到/var/log/messagesZ进程根因定位:cat /proc/${pid}/stack 四、相关案例【欧拉】xfs问题导致僵尸进程,D进程,集群不可用等问题五、参考文档麒麟V10,操作系统脏数据相关参数调整命令(用于解决脏数据引起的操作系统内核卡顿,导致dn主备切换)案例:系统中出现大量不可中断进程(D)和僵尸进程(Z)怎么办?LINUX云服务器进程D状态问题分析[僵尸进程产生原因和解决方法]内核Hungtask原理和定位思路总结Linux磁盘I/O(二):使用vm.dirty_ratio和vm.dirty_background_ratio优化磁盘性能
  • [集群异常] 【变更】升级813后报错An I/O error occurred while canceling to backend
    一、快速确认以下为触发条件:1.处于变更后未提交阶段或处于只读模式2.max_query_retry_times大于03.backtrace_min_messages设置为ERROR后,能在堆栈中看到pq_disk_send_to_frontend关键字满足以上三点,可确认为此问题二、问题概述 升级813版本完成后,客户端查询等返回报错An I/O error occurred while canceling to backend查看日志,实质上报错为Disk write is not allowed as default_transction_read_only is on.客户端未正确识别,直接报连接断开错误此状态可以确定是因为集群处于升级完成但没有提交的状态,是只读的 max_query_retry_times大于0时,开启CN retry功能  ,CN retry开启后,CN的结果集会buffer在CN本地,不会发送给客户端,避免返回数据后又需要报错时,无法进行查询重试CN retry缓存结果集时,当buffer不足时,会触发结果集下盘。下盘触发只读的FATAL报错FATAL报错发送给客户端,客户端未正确识别,直接报连接断开错误三、相关案例【业务连接】An I/O error occurred while sending to the backendGaussDB(DWS)现网案例之超大结果集接收异常【连接报错】An I/O error occurred while sending to the backend  
  • [开发应用] DWS支持实时流数据读取吗?
    用flink实时读取dws数据,结果执行一会显示任务成功,不能流式执行?难道dws不支持吗?
  • [开发应用] 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';