云服务器内容精选

  • 告警解释 GaussDB (DWS)通过资源池实现对内存、IO和CPU等资源的控制,并基于优先级调度机制实现资源管理和分配,对用户业务提供资源负载管理服务。某种资源紧张时,可能出现SQL语句阻塞排队,等待其他语句执行完毕后才能执行的现象,详情请参见动态负载管理下的CCN排队。 GaussDB(DWS)固定每5分钟检查默认资源池default_pool的队列阻塞情况。如果存在长时间阻塞无法执行的SQL语句(默认20分钟,可配置),则触发集群默认资源池队列阻塞告警;当集群不存在符合告警条件的SQL语句时,自动消除该告警。 如果一直存在能够引发告警的阻塞SQL,那么在24小时(可配置)后将再次发起告警。
  • 概述 用户使用客户端连接DWS集群时,如果用户仅连接一个CN节点地址,通过该CN节点内网IP或弹性公网IP连接时,只能连接到固定的CN节点上,存在CN单点问题。如果通过内网 域名 或公网域名连接,域名解析服务会对每个客户端随机选择一个内网/公网IP地址,其解析机制并不能保证负载均衡,同样也存在CN单点问题。因此引入了弹性负载均衡服务(Elastic Load Balance,下称ELB)解决集群访问的单点问题。 弹性负载均衡(ELB)是将访问流量根据转发策略分发到后端多台弹性云服务器的流量分发控制服务,可以通过流量分发扩展应用系统对外的服务能力,提高应用程序的容错能力。了解更多,请参见弹性负载均衡。 利用ELB健康检查机制可将集群的CN请求快速转发到正常工作的CN节点上,当有CN故障节点时,也能第一时间切换流量到健康节点上,最大化降低集群访问故障。当前支持同VPC绑定ELB和跨VPC绑定ELB两种类型操作。 该特性仅8.1.1.200及以上集群版本支持。 为保证集群负载均衡和高可用,避免CN单点故障问题,客户生产业务下,要求集群创建后进行ELB绑定。 集群跨VPC绑定ELB时支持绑定与集群VPC不一致的独享型负载均衡。 ELB不支持跨库访问。
  • 约束与限制 绑定ELB时,需创建和GaussDB(DWS)集群相同的区域、VPC以及企业项目的ELB进行绑定。 GaussDB(DWS)的ELB功能仅支持独享型ELB规格,不支持共享型ELB绑定操作。 部分Region因为独享型ELB规格没有上线,所以不支持负载均衡能力。详情可跳转至ELB控制台查看是否支持独享型ELB。 绑定ELB时,需创建TCP网络型且有内网IP的ELB进行绑定。 创建ELB时,ELB规格需要用户按本身业务访问流量评估,建议选取最大规格。GaussDB(DWS)侧仅是绑定关联ELB,并不改变ELB规格。 创建ELB时,仅需创建ELB,无需创建ELB服务的监听器与后端服务器组,GaussDB(DWS)会自动创建所需要的ELB监听器与后端服务器组。 创建ELB时,不能存在与数据库相同端口的监听器,否则会导致ELB绑定失败。 绑定ELB时,GaussDB(DWS)侧默认为ELB服务配置“ROUND_ROBIN”转发策略,并设置10秒的健康检查间隔,50秒超时时间以及3次重试次数。用户如果需要修改此ELB默认参数时,请充分评估影响。 跨VPC绑定ELB时,仅支持独享型负载均衡。 跨VPC绑定ELB时,需检查集群VPC与ELB所属VPC下的子网网段不能重复。 解绑ELB时,GaussDB(DWS)侧会清除ELB中集群相关信息,但并不会删除用户ELB,请注意ELB本身的计费影响,防止不必要的成本支出。 如需要公网IP或者域名访问ELB集群时,请通过ELB服务管理页面进行EIP绑定或者域名操作。 如果集群为IPv4集群,则仅支持绑定IPv4的ELB;如果集群为IPv6双栈集群,则仅支持绑定IPv6双栈的ELB。暂不支持交叉场景的ELB绑定。
  • 告警解释 GaussDB(DWS)每30秒采集集群各节点所有磁盘的使用情况。 如果存在磁盘最近10分钟(可配置)内的最大使用率超过80%(可配置),则上报节点数据盘使用率超阈值的重要告警;如果平均使用率低于75%(即上报阈值减去5%),则消除该重要告警。 如果存在磁盘最近10分钟(可配置)内的最大使用率超过85%(可配置),则上报节点数据盘使用率超阈值的紧急告警;如果平均使用率低于80%(即上报阈值减去5%),则消除该紧急告警。 如果存在磁盘的最大使用率一直大于上报阈值,那么在24小时(可配置)后将再次发起告警。
  • 背景信息 GaussDB(DWS)支持在变更操作前(扩/缩容、经典规格变更、升级)进行集群巡检,即在对应变更页面单击“立即巡检”按钮后会巡检当前集群的健康状态和集群指标是否满足变更要求,检查通过后可开始变更。如果巡检不通过,可打开巡检详情,查看不通过的巡检项,根据详情说明处理不通过的巡检项。巡检项检查标准详情请参见表1。 该特性仅8.1.1及以上集群版本支持。 如果用户无法处理不通过的巡检项,请联系技术支持人员。
  • 概述 阈值告警相关概念: 告警规则:告警规则由告警规则名称,告警规则描述,规则绑定集群列表,告警策略触发关系,告警策略项构成。一条告警规则可绑定某个指定集群或所有集群,拥有一个或多个告警策略。其中,告警策略之间组合关系由“策略触发关系”选项描述。告警规则的阈值触发和抑制条件由每条告警策略描述。 告警策略:为某个告警指标指定的触发条件,抑制条件,告警级别的组合称为告警策略。 告警指标:数据库集群的某个指标项,一般是一个时间序列数据,例如:节点CPU使用率,查询触发下盘量等。 告警规则分类: 默认规则:GaussDB(DWS)阈值告警模块的最佳实践。 自定义规则:用户可自由选择或组合监控指标形成个性化的告警规则。目前版本仅支持用户自定义schema使用率告警规则。 告警规则操作: 修改:修改告警规则的选项。所有告警规则都可以修改编辑,但默认告警规则只能修改部分选项,而自定义告警规则可以修改全部选项。 启用/停用:启用或停用告警规则。所有的告警规则都可以启用/停用,启用后告警规则会被告警引擎纳入检查列表,可以正常触发。停用后的告警规则将被告警引擎移出检查列表,不会触发该规则检查。 删除:删除告警规则。只有自定义告警规则可以被删除,用户无法删除默认告警规则。
  • 告警解释 用户业务查询执行过程中,数据库可能会选择将临时结果暂存到磁盘,简称算子下盘。 GaussDB(DWS)每60秒通过GS_WLM_SESSION_STATIS TICS 视图检测CN上正在执行的作业的负载管理记录,并计算所有下盘DN的最大下盘数据量。 如果10分钟(可配置)内存在SQL的下盘量超过5GB(可配置),则上报查询语句触发下盘量超阈值;当集群不存在符合告警条件的SQL语句时,自动消除该告警。修改告警配置详情请参见修改告警规则。 如果一直存在能够引发告警的阻塞SQL,那么在24小时(可配置)后将再次发起告警。
  • 告警解释 GaussDB(DWS)开启实时查询监控时,默认每60秒通过GS_WLM_SESSION_STATISTI CS 视图检测CN上正在执行作业的排队状态。 如果10分钟(可配置)内检测集群中处于排队等待状态的SQL语句数量超过10个(可配置),则上报查询语句堆积数量超阈值告警;当集群处于等待状态的SQL语句数量小于10时,自动消除该告警。 如果一直存在能够引发告警的查询语句堆积数量,那么在24小时(可配置)后将再次发起告警。
  • 概述 告警管理包含查看告警规则、告警规则配置与告警信息订阅功能。其中,告警规则可以提供过去一周的告警信息统计与告警信息明细,方便用户自行查看租户下的告警。该特性除了以默认值的形式提供一套GaussDB(DWS)告警最佳实践外,还允许用户根据自己的业务特点,个性化修改告警阈值。告警管理通过 消息通知 服务(Simple Message Notification,简称 SMN )发送GaussDB(DWS) 告警通知,用户可订阅告警启用通知。 该特性仅8.1.1.200及以上集群版本支持。 告警管理目前暂不支持按照企业项目划分告警。
  • Kafka实时入库到GaussDB(DWS) 通过 数据湖探索 服务 DLI Flink作业将Kafka的消费数据实时同步至GaussDB(DWS) 数据仓库 ,实现Kafka实时入库到GaussDB(DWS)的过程。 了解DLI请参见 数据湖 产品介绍 。 了解Kafka请参见分布式消息服务Kafka产品介绍。 图1 Kafka实时入库DWS 具体操作请参见通过DLI Flink作业将Kafka数据实时写入DWS。 父主题: 实时入库
  • 安装dws-kettle-plugin自定义插件 下载dws-client相关插件。 dws-kettle-plugin.jar:访问下载地址,获取最新版本使用。 dws-client.jar:访问下载地址,获取最新版本使用。 caffeine.jar:访问下载地址,选择与dws-client对应依赖的版本,例如dws-client为1.0.10,则获取1.0.10下对应的caffeine.jar。 必须选择dws-client对应依赖的版本,使用其他版可能会出现不兼容问题。 huaweicloud-dws-jdbc.jar:访问下载地址,选择与dws-client对应依赖的版本,例如dws-client为1.0.10,则获取1.0.10下对应的huaweicloud-dws-jdbc.jar。 在kettle的安装目录data-integration\plugins下新建目录,如dws-plugin。 将dws-kettle-plugin.jar放在data-integration\plugins\dws-plugin目录下。 将dws-client.jar、caffeine.jar放在data-integration\plugins\dws-plugin\lib目录下。 将huaweicloud-dws-jdbc.jar放在data-integration\lib目录下。
  • 表自动分析 GaussDB(DWS)提供了三种场景下表的自动分析。 当查询中存在“统计信息完全缺失”或“修改量达到analyze阈值”的表,且执行计划不采取FQS(Fast Query Shipping)执行时,则通过GUC参数autoanalyze控制此场景下表统计信息的自动收集。此时,查询语句会等待统计信息收集成功后,生成更优的执行计划,再执行原查询语句。 当autovacuum设置为on时,系统会定时启动autovacuum线程,对“修改量达到analyze阈值”的表在后台自动进行统计信息收集。 表1 表自动分析 触发方式 触发条件 触发频率 控制参数 备注 同步 统计信息完全缺失 查询时 autoanalyze truncate主表时会清空统计信息。 同步 数据修改量达到analyze阈值 查询时 autoanalyze 先触发analyze,后选择最优计划。 异步 数据修改量达到analyze阈值 autovacuum线程轮询检查 autovacuum_mode, autovacuum_naptime 2s等锁超时, 5min执行超时。 autoanalyze只支持默认采样方式,不支持百分比采样方式。 多列统计信息仅支持百分比采样,因此autoanalyze不收集多列统计信息。 查询过程因表的“统计信息完全缺失”和“修改量达到analyze阈值”而自动触发autoanalyze的场景,当前不支持对外表触发autoanalyze,不支持对带有ON COMMIT [DELETE ROWS | DROP]选项的临时表触发autoanalyze。 修改量达到analyze阈值是指:表的修改量超过autovacuum_analyze_threshold + autovacuum_analyze_scale_factor * reltuples,其中reltuples是pg_class中记录的表的估算行数。 基于定时启动的autovacuum线程触发的autoanalyze,仅支持行存表和列存表,不支持外表、HDFS表、OBS外表、临时表、unlogged表和toast表。 查询时触发analyze会对分区表的所有分区加四级锁,直到查询所在事务提交后才会放锁。四级锁不堵塞增删改查,但会堵塞分区的修改操作,比如分区的truncate,可以通过将object_mtime_record_mode设置为disable_partition,实现提前释放分区锁。 autovacuum自动清理功能的生效还依赖于下面两个GUC参数: track_counts参数需要设置为on,开启收集收据库统计数据功能。 autovacuum_max_workers参数需要大于0,该参数表示能同时运行的自动清理线程的最大数量。
  • 操作步骤 分析数据源特征,选择若干个键值重复度小,数据分布比较均匀的备选分布列。 从步骤1中选择一个备选分布列创建目标表。 1 2 3 4 5 6 7 8 9 CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UN LOG GED ] TABLE [ IF NOT EXISTS ] table_name ({ column_name data_type [ compress_mode ] [ COLLATE collation ] [ column_constraint [ ... ] ] | table_constraint | LIKE source_table [ like_option [...] ] } [, ... ]) [ WITH ( {storage_parameter = value} [, ... ] ) ] [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ] [ COMPRESS | NOCOMPRESS ] [ TABLESPACE tablespace_name ] [ DISTRIBUTE BY { REPLICATION | ROUNDROBIN | { HASH ( column_name [,...] ) } } ]; 参照前面章节中的办法向目标表中导入小批量数据。 对于单个数据源文件,在导入时,可通过均匀切割,导入部分切割后的数据源文件来验证数据倾斜性。 检验数据倾斜性。命令中的table_name ,请填入实际的目标表名。 1 SELECT a.count,b.node_name FROM (SELECT count(*) AS count,xc_node_id FROM table_name GROUP BY xc_node_id) a, pgxc_node b WHERE a.xc_node_id=b.node_id ORDER BY a.count desc; 若各DN上数据分布差小于10%,表明数据分布均衡,选择的分布列合适。请清理已导入小批量数据,导入全量数据,以完成数据迁移。 若各DN上数据分布差大于等于10%,表明数据分布倾斜,请从步骤1的备选分布列中删除该列,删除目标表,并重复步骤2 、步骤3 、步骤4 和步骤5。 此处的数据分布差表示实际查询到DN上的数据量与DN平均数据量的差异。分布差可以通过视图PGXC_GET_TABLE_SKEWNESS的查看。 (可选)如果上述步骤不能选出适合的分布列,需要从备选分布列选择多个列的组合作为分布列来完成数据迁移。
  • 示例 对目标表staffs选择合适的分布列。 分析表staffs的数据源特征,选择数据重复度低且分布均匀的备选分布列staff_ID、FIRST_NAME和LAST_NAME。 先选择staff_ID作为分布列,创建目标表staffs。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 CREATE TABLE staffs ( staff_ID NUMBER(6) not null, FIRST_NAME VARCHAR2(20), LAST_NAME VARCHAR2(25), EMAIL VARCHAR2(25), PHONE_NUMBER VARCHAR2(20), HIRE_DATE DATE, employment_ID VARCHAR2(10), SALARY NUMBER(8,2), COMMISSION_PCT NUMBER(2,2), MANAGER_ID NUMBER(6), section_ID NUMBER(4) ) DISTRIBUTE BY hash(staff_ID); 向目标表staffs中导入部分数据。 根据以下查询所得,集群环境中主DN数为8个,则建议导入的记录数为80000条。 1 2 3 4 5 SELECT count(*) FROM pgxc_node where node_type='D'; count ------- 8 (1 row) 校验以staff_ID为分布列的目标表staffs的数据倾斜性。 1 2 3 4 5 6 7 8 9 10 11 12 SELECT a.count,b.node_name FROM (select count(*) as count,xc_node_id FROM staffs GROUP BY xc_node_id) a, pgxc_node b WHERE a.xc_node_id=b.node_id ORDER BY a.count desc; count | node_name ------+----------- 11010 | datanode4 10000 | datanode3 12001 | datanode2 8995 | datanode1 10000 | datanode5 7999 | datanode6 9995 | datanode7 10000 | datanode8 (8 rows) 根据上一步骤查询所得,各DN上数据分布差大于10%,数据分布倾斜。所以从步骤1的备选分布列中删除该列,并删除目标表staffs。 1 DROP TABLE staffs; 尝试选择staff_ID、FIRST_NAME和LAST_NAME的组合作为分布列,创建目标表staffs。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 CREATE TABLE staffs ( staff_ID NUMBER(6) not null, FIRST_NAME VARCHAR2(20), LAST_NAME VARCHAR2(25), EMAIL VARCHAR2(25), PHONE_NUMBER VARCHAR2(20), HIRE_DATE DATE, employment_ID VARCHAR2(10), SALARY NUMBER(8,2), COMMISSION_PCT NUMBER(2,2), MANAGER_ID NUMBER(6), section_ID NUMBER(4) ) DISTRIBUTE BY hash(staff_ID,FIRST_NAME,LAST_NAME); 校验以staff_ID、FIRST_NAME和LAST_NAME的组合为分布列的目标表staffs的数据倾斜性。 1 2 3 4 5 6 7 8 9 10 11 12 SELECT a.count,b.node_name FROM (select count(*) as count,xc_node_id FROM staffs GROUP BY xc_node_id) a, pgxc_node b WHERE a.xc_node_id=b.node_id ORDER BY a.count desc; count | node_name ------+----------- 10010 | datanode4 10000 | datanode3 10001 | datanode2 9995 | datanode1 10000 | datanode5 9999 | datanode6 9995 | datanode7 10000 | datanode8 (8 rows) 根据上一步骤查询所得,各DN上数据分布差小于10%,数据分布均衡,选择的分布列合适。 清理已导入小批量数据。 1 TRUNCATE TABLE staffs; 导入全量数据,以完成数据迁移。
  • 背景信息 GaussDB(DWS)是采用Shared-nothing架构的MPP(Massive Parallel Processor,大规模并发处理)系统,采用水平分布的方式,将业务数据表的元组按合适的分布策略分散存储在所有的DN。 当前产品支持复制(Replication)、散列(Hash)和轮询(Roundrobin)三种用户表分布策略。 Replication方式:在每一个DN上存储一份全量表数据。对于数据量比较小的表建议采取Replication分布策略。 Hash方式:采用这种分布方式,需要为用户表指定一个分布列(distribute key)。当插入一条记录时,系统会根据分布列的值进行Hash运算后,将数据存储在对应的DN中。对于数据量比较大的表建议采取Hash分布策略。 Roundrobin方式:表的每一行被轮番地发送给各个DN,因此数据会被均匀地分布在各个DN中。对于数据量比较大的表,如果Hash分布找不到一个合适的分布列,建议采用Roundrobin分布策略。