华为云用户手册

  • 身份认证 您可以通过Live控制台、API、SDK访问Live,无论访问方式封装成何种形式,其本质都是通过Live提供的REST风格的API接口进行请求。 Live的接口请求需要经过认证后才可以访问成功。其中,调用接口有以下两种认证方式,您可以选择其中一种进行认证鉴权。 Token认证:通过Token认证调用请求。 AK/SK认证:通过AK(Access Key ID)/SK(Secret Access Key)加密调用请求。推荐使用AK/SK认证,其安全性比Token认证要高。 关于认证鉴权的详细介绍及获取方式,请参见认证鉴权。
  • 访问控制 Live支持通过 IAM 权限、防盗链进行访问控制。 表1 Live访问控制 访问控制方式 简要说明 详细介绍 Live基于IAM权限控制 IAM权限是作用于云资源的,IAM权限定义了允许和拒绝的访问操作,以此实现云资源权限访问控制。管理员创建IAM用户后,需要将用户加入到一个用户组中,IAM可以对这个组授予Live所需的权限,组内用户自动继承用户组的所有权限。 Live权限管理 防盗链 为了防止用户在Live的数据被其他人盗链,Live为您提供了Referer防盗链、Key防盗链和IP黑白名单鉴权机制,对访问者的身份进行识别和过滤,符合规则的才可使用Live。 防盗链介绍
  • 解密敏感配置 在微服务业务代码的application.yml文件中配置敏感配置项,样例如下: nuwa: security: config: sensitiveWords: spring.redis.password,org.app.protocol-login.oauth.clientSecret,org.app.jwt-key 启动敏感配置项自动解密。 在微服务的启动类中添加@EnableStsEncryptableProperties注解。
  • 访问凭据管理服务功能介绍 访问凭据管理服务(Access Credential Management Service,简称ACMS,也称为Security Token Service,简称STS)为云服务业务提供了以下两个功能: 微服务之间请求认证 ACMS为每个接入的微服务,颁发了用于通信中进行认证的STS认证凭据,两个微服务之间通信时,可以使用该认证凭据,进行STS认证。 为了让微服务可以安全地获取到STS认证凭据,STS给每个接入的微服务颁发了一张身份证书,该证书中包含了微服务的名称等信息。该证书在微服务部署时,安装到微服务所在的虚拟机或容器里。微服务使用该证书,就可以到STS-Server上获取认证凭据。 两个微服务之间通信时,被调用方(Provider)需要在ACMS管理台上给调用方(Consumer)配置访问权限(Access Control List,简称ACL),开通后,Consumer就可以使用STS下发的认证凭据,用于消息的签名和加密。 敏感配置的托管和分发功能 ACMS为每个接入的微服务都分配了一个用于加密敏感数据的密钥(KEK),对服务也分配了加密敏感数据的密钥(ServiceKEK)。同一个服务下的所有微服务,ServiceKEK是相同的。 利用这两个密钥,微服务可以将一些敏感配置托管到STS,STS会使用KEK或ServiceKEK对数据进行加密,在微服务部署时,由部署平台将敏感数据密文下发到微服务部署的环境上。 微服务启动时,利用微服务身份证书,可以同时获取KEK和ServiceKEK,从而把敏感数据明文解密出来。 父主题: 配置访问凭据管理服务
  • 更多操作 隔离域规划创建后,您还可以对隔离域规划进行以下操作。 表2 相关操作 操作名称 操作步骤 导出全量隔离域规划信息 在隔离域规划列表,单击“导出”,导出隔离域规划信息。 导出指定隔离域规划信息 在“隔离域规划”页签,输入筛选条件,并单击“查询”。 单击“导出”,导出隔离域规划信息。 删除隔离域规划 在隔离域规划列表,单击待删除隔离域规划所在行“操作”列的“删除”。 批量删除隔离域规划 在隔离域规划列表,勾选待删除隔离域规划,然后单击列表左上方的“删除”。
  • 弹性网络服务 弹性网络服务(ENS)通过引入“隔离域”这一网络资源概念,将业务使用的底层网络资源进行封装,为具有相同安全保护需求并相互信任的服务提供访问策略的安全分组。当服务器加入到隔离域后,即受到这些访问规则的保护。访问规则继承自选定的安全区域(安全域),并根据租户声明的服务依赖关系自动生成。 图1 ENS与原有模式差异 隔离域内部是在虚机子网或者容器网段上加安全域包装在一起的,当建立了隔离域后,业务层只感知隔离域与隔离域之间的互通关系。 图2 业务感知差异
  • 运维中心基本概念 基本概念 说明 资源 资源是具备一定功能和作用的实例,是部署服务的管理对象,如WiseCloud::MicloudService::NuwaContainer实例、WiseCloud::Cache::D CS 实例等。 组件 组件是一个具有相同资源的集合,组件具备以下特点: 可以在组件中声明资源以及资源之间的依赖关系。 同一个资源只能属于一个组件。 组件下的所有资源上下文一致。 环境 环境是一个具有相同组件的集合,环境具有以下特点: 部署服务代码中的environment-id是“环境”的唯一索引。 不同环境下的组件和资源可以同名,同一环境下的资源和组件名称需要保证唯一。 一个组件只能属于一个环境,一个环境下会有多个组件。 环境变更的本质是环境下组件的变更。 流水线 流水线是将多个组件的变更组合起来的流程描述,描述各个组件变更的方式和次序。 变更工单 变更工单是实施现网变更的授权许可,业务需要发起现网变更时,通常会由研发人员提交变更电子流,并附上对应的变更文档。该电子流被审批通过后,会在变更工单管理中,创建一条对应的变更工单,运维人员可使用变更工单实施变更。 变更计划 变更计划是部署服务发起具体变更动作前的风险影响评估过程。通过风险影响评估过程可以得到,本次变更可能导致的资源动作和属性差异变化,以及可能的风险项。 变更风险项 变更风险项是某个资源的具体变更的风险认定。其描述了认定为风险变更的属性变化,以及能够审批允许的审批人列表。 变更电子流 变更电子流是用于无人值守变更的高度自动化的变更方式,是在部署服务基础上,尽可能将所有的运维手工选择操作前移到提交电子流之前。 Terraform Terraform是HashiCorp公司开发的基础设施即代码(Infrastructure-as-Code,IaC)软件,它能自动化的进行 资源编排 ,用于安全高效地预览、配置和管理云基础架构和资源,并提供自定义解决方案。 监控 是采集、汇总和分析IT基础设施、服务组件以及程序应用的运行指标,以了解其当前状态和运行状况,判断是否安全可靠的过程,是保证业务持续稳定运行的重要手段。 告警 告警是监控系统的响应组件,它根据指标值的变化按照既定的策略执行响应操作,其主要目的是引起人们对系统当前状态的关注。告警定义包含基于指标的条件或阈值以及当指标值达到或超出定义条件时要执行的操作。 告警通知 告警的通知在所有的告警处理的链路结束以后才会发生。告警处理模块会根据上报告警的上下文获取告警的值班配置,值班配置由业务预置。 告警屏蔽 为您提供短时间的屏蔽功能,可以通过设置告警屏蔽的规则,告警将在屏蔽的时间内不再触发任何通知,规则结束后,将会被再次唤醒,屏蔽期间告警被清除后,将不再触发任何通知,减少您的处理频度。 告警过滤 告警过滤是直接在接入的阶段就将告警屏蔽,告警仍然会进入Bypass的数据库但不会再向下发送给告警处理模块。 告警收敛 多个维度的告警,通过特定的条件将它们变为一条告警,只需要配置自定义的收敛规则,就可以将重复告警收敛到一起,还有默认的规则帮助用户维护告警。 告警标记 告警标记的作用是为一段时间内的告警打上标签,例如现网变更或者现网演练时,由于要模拟大量异常请求和其他操作会造成大量无用告警上报,标记的作用就是为这一段时间的告警打上标签与正常告警进行区分。 告警定义 对于繁琐复杂的告警上报字段感到困惑,使用统一定义,将会自动下发到业务对应的agent,更加人性化的界面设计,使告警上报更加统一、准确。 告警修复 设置特定的命中条件,告警在发送通知之前会执行预置的修复脚本,进行修复操作,自动帮你修复简单的告警。 语音值班配置 当告警生成时,配置对应的责任人,通过 WeLink 、短信、电话等多种形式,快速将异常情况通知到责任人。 日志 日志是指设备、系统或服务程序在运作时都会产生的事件记录,每一行日志都记载着日期、时间、使用者及动作等相关操作的描述。一般系统会有各种各样的日志文件,如应用程序日志,安全日志、系统日志、Scheduler服务日志、WWW日志、DNS服务器日志等。 日志项目 日志项目是一个包含多个日志服务配置的整体,可以看作是一个微服务实例。 同一个微服务实例下的日志服务配置应当包含在一个日志项目中。 不同微服务实例使用完全相同的日志服务配置时,也可以共用同一个日志项目。 日志空间 日志空间是日志服务为微服务的日志分配的使用空间。 业务须在日志接入页面填写日志相关信息并提交申请日志空间,日志空间支持定义空间内日志的结构化格式信息,此时要求所有使用此空间的日志都满足该日志格式。 日志采集配置 日志采集配置是日志服务采集端在采集微服务实例中日志时所需的配置,一种日志对应一项采集配置。 日志采集配置须归属于一个日志项目,并使用一个已分配好的日志空间。 日志采集配置之间可以共用日志空间,此时需要关注日志空间的日志格式要求,未定义日志格式的空间可不用关注。 事件 事件是指IT基础设施、服务组件以及程序应用等运行过程中发生的问题。事件可通过监控系统自动生成、客户报障生成或SRE主动巡检生成等。监控系统生成事件首先要采集和分析运行数据,然后根据预定规则判断是否需要生成事件。 HCW HW Cloud Watch,AppStage运维中心提供的监控系统,也称为云眼,可以提供监控、告警功能。 HCW Agent 监控系统的采集框架,需要在每台主机上部署,部署路径为/opt/huawei/HCW_Agent。 EAP 事件自动化平台(Event & Action Platform,EAP),通过集成各系统动作,解决复杂运维场景的操作编排功能。 流程 可以通过EAP平台所提供的各种动作组合来编排解决具体运维场景的流程。 动作 各服务的操作(例如部署任务、执行作业、确认告警等)封装。 标签 对某一类特定群体或对象的某项特征进行的抽象分类和概括,其值(标签值)具备可分类性。 标签树 标签树负责标签的管理,包括标签的创建,删除,修改。系统标签由系统管理员统一进行管理,业务自定义标签由业务人员进行管理。 逻辑主体 逻辑主体是业务实体的抽象,是基于物理表(MPPDB、ClickHouse、Influxdb)创建。逻辑主体和物理表之间存在映射关系,逻辑主体的字段名称和物理表可以不一样,这也是为了实现业务属性和物理表之间的解耦。 一个逻辑主体可以映射多种物理实体,当底层数据物理表变更,上层的指标逻辑定义可以不用发生变化。 指标 指标是指在被观测系统中观察和收集的资源使用或行为的测量值,可能是原始采集的数据,也可能是后期经过各种计算和统计方法得到的数值。 令牌 令牌是使用数据源的鉴权方式,只有通过对应业务的token的鉴权,才能使用对应的数据源。 视图 指标本身包含了业务计算规则,只有结合数据源才能真正被查询。视图,就是指标 + 物理表的结合,也是监控大盘上直接可被查询的对象。视图可以包含一个或多个指标,例如折线图只需要单指标的视图,但是表格就需要多指标的视图。 查询视图(Query View)。直接作用于物理表的查询视图,大多用在druid实时监控场景。 长期存储视图(Long Term View)。基于查询视图,可以创建长期存储视图。如果觉得某个查询视图值得被长期持久化,就可以使用该能力。长期存储视图会自动创建三个聚合任务,分别是5分钟粒度、小时粒度、天粒度。 持久化视图(Persistent View)。基于查询视图,可以创建持久化视图。部分视图需要出日报,就可以使用该能力。该视图会自动创建一个汇聚任务。 异常检测视图(Anomaly Detect View)。基于查询视图,可以创建异常检测视图,用来为异常检测任务提供数据。 插件 可在机器上执行并采集各项参数的二进制文件或者脚本。 微服务 微服务是云原生应用的最佳架构, 它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个微服务运行在其独立的进程中, 微服务与微服务间采用轻量级的通信机制互相沟通。每个微服务由全功能团队独立构建、独立测试,并且能够被独立地部署到生产环境。微服务的特点:组件化、松耦合、服务自治、去中心化。 应用 完成某项完整业务场景的软件系统。应用一般由多个微服务组成,应用里面的微服务能够相互发现和调用。 NUWA框架 NUWA提供一个完整的微服务开发框架,是一个开箱即用的应用级容器,以插件的形式汇聚云服务平台能力,让开发把时间更多的花在业务代码逻辑上。 Kubernetes Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署、规划、更新、维护的一种机制。 Pod Pod是Kubernetes创建或部署的最小单位。一个Pod封装一个或多个容器、存储资源、一个独立的网络IP以及管理控制容器运行方式的策略选项。 Node Node是一个执行具体工作的机器,可以是虚拟机或者物理机。Pod是部署在Node节点上的,如果Node故障,整个Pod会被调度到集群中的另外可用的Node节点上去。 工作负载 工作负载是在Kubernetes上运行的应用程序。无论您的工作负载是单个组件还是协同工作的多个组件,您都可以在Kubernetes上的一组Pod中运行它。在Kubernetes中,工作负载是对一组Pod的抽象模型,用于描述业务的运行载体,包括Deployment、StatefulSet、DaemonSet、Job、CronJob等多种类型。 无状态工作负载:即Kubernetes中的“Deployment”,无状态工作负载支持弹性伸缩与滚动升级,适用于实例完全独立、功能相同的场景,如:nginx、wordpress等。 有状态工作负载:即Kubernetes中的“StatefulSet”,有状态工作负载支持实例有序部署和删除,支持持久化存储,适用于实例间存在互访的场景,如ETCD、mysql-HA等。 创建守护进程集:即Kubernetes中的“DaemonSet”,守护进程集确保全部(或者某些)节点都运行一个Pod实例,支持实例动态添加到新节点,适用于实例在每个节点上都需要运行的场景,如ceph、fluentd、Prometheus Node Exporter等。 普通任务:即Kubernetes中的“Job”,普通任务是一次性运行的短任务,部署完成后即可执行。使用场景为在创建工作负载前,执行普通任务,将镜像上传至镜像仓库。 定时任务:即Kubernetes中的“CronJob”,定时任务是按照指定时间周期运行的短任务。使用场景为在某个固定时间点,为所有运行中的节点做时间同步。 父主题: 运维中心简介
  • 日志接入场景 表1 日志接入场景说明 场景 说明 日志接入方式 虚拟机日志 日志存储在虚拟机下的文件路径中。 虚拟机日志接入 容器hostPath日志 主机文件系统上的文件或目录挂载到容器上,使用主机文件系统存储容器日志。 容器日志接入 容器标准输出日志 标准输出是Kubernetes社区推荐的日志输出方式。 虚拟机日志接入同时开启软连接 容器共享存储日志 容器日志挂载在共享存储上。 容器归属的虚拟机没有挂载此共享存储,则无法采集对应的容器日志,需要将共享存储挂载在虚拟机上。 将共享存储挂载在虚拟机上,然后使用虚拟机日志接入方式
  • 更多操作 您还可以对已创建的日志清理作业进行以下操作。 表2 相关操作 操作名称 操作步骤 停用日志清理作业 在日志清理作业列表中,单击日志清理作业所在行“启用”列的,当变为时,表示已停用该作业。 启用日志清理作业 在日志清理作业列表中,单击日志清理作业所在行“启用”列的,当变为时,表示已启用该作业。 查看执行历史 在定时作业列表中,单击日志清理作业所在行“操作”列的“执行历史”,进入“作业清单”页面查看执行历史。 编辑日志清理作业 在定时作业列表中,单击日志清理作业所在行“操作”列的“编辑”。 编辑日志清理作业信息,单击“保存”。 启用中的作业不支持编辑,要停用作业后才能编辑。 删除日志清理作业 在日志清理作业列表中,单击日志清理作业所在行“操作”列的“删除”。 单击“确定”。 启用中的作业不支持删除,要停用作业后才能删除。
  • 功能介绍 数据库管理 WiseDBA为用户提供统一的数据库管理平台,支持用户级的管理、监控、可视化的数据库交互等功能,为用户节省50%以上的管理成本,提高数据库运维效率。 数据查询 数据查询工具可以帮助业务简化现网的SQL查询流程,避免SRE直接操作数据库。 SQL变更 SQL变更工具可以帮助业务简化现网的SQL变更流程。 实时诊断 WiseDBA为数据库实例提供运维全生命的智能分析服务,让用户既可以直观地感知数据库实例的实时运行状况,也可以定位实时异常,并根据WiseDBA建议进行系统优化。
  • 应用场景 使用SLB为高访问量业务进行流量分发 对于业务量访问较大的业务,可以通过SLB设置相应的分配策略,将访问量均匀的分到多个后端服务器处理。例如大型门户网站,移动应用市场等。 使用SLB消除单点故障 对可靠性有较高要求的业务,可以在SLB上添加多个后端服务器。SLB会通过健康检查及时发现并屏蔽有故障的服务器,并将流量转发到其他正常运行的后端服务器,确保业务不中断,例如官网,计费业务,Web业务等。 使用SLB跨可用区特性实现业务容灾部署 对可靠性和容灾有很高要求的业务,SLB可将流量跨可用区进行分发,建立实时的业务容灾部署。即使出现某个可用区网络故障,SLB仍可将流量转发到其他可用区的后端服务器进行处理,例如银行业务,警务业务,大型应用系统等。
  • 词典概述 词典用于定义停用词(stop words),即全文检索时不搜索哪些词。 词典还可以用于对同一词的不同形式进行规范化,这样同一个词的不同派生形式都可以进行匹配。规范化后的词称为词位(lexeme)。 除了提高检索质量外,词的规范化和删除停用词可以减少文档tsvector格式的大小, 从而提高性能。词的规范化和删除停用词并不总是具有语言学意义,用户可以根据应用环境在词典定义文件中自定义规范化和删除规则。 一个词典是一个程序,接收标记(token)作为输入,并返回: 如果token在词典中已知,返回对应lexeme数组(注意,一个标记可能对应多个lexeme)。 一个lexeme。一个新token会代替输入token被传递给后继词典(当前词典可被称为过滤词典)。 如果token在词典中已知,但它是一个停用词,返回空数组。 如果词典不能识别输入的token,返回NULL。 GaussDB (DWS)提供了多种语言的预定义词典,同时提供了五种预定义的词典模板,分别是Simple,Synonym,Thesaurus,Ispell,和Snowball,可用于创建自定义参数的新词典。 在使用全文检索时,建议用户: 可以在文本搜索配置中定义一个解析器,以及一组用于处理该解析器的输出标记词典。对于解析器返回的每个标记类型,可以在配置中指定不同的词典列表进行处理。当解析器输出一种类型的标记后,在对应列表的每个词典中会查阅该标记,直到某个词典识别它。如果它被识别为一个停用词, 或者没有任何词典识别,该token将被丢弃,即不被索引或检索到。通常情况下,第一个返回非空结果的词典决定了最终结果,后继词典将不会继续处理。但是一个过滤类型的词典可以依据规则替换输入token,然后将替换后的token传递给后继词典进行处理。 配置词典列表的一般规则是,第一个位置放置一个应用范围最小的、最具体化定义的词典,其次是更一般化定义的词典, 最后是一个普适定义的词典,比如Snowball词干词典或Simple词典。在下面例子中,对于一个针对天文学的文本搜索配置astro_en,可以定义标记类型asciiword(ASCII词)对应的词典列表为:天文术语的Synonym同义词词典, Ispell英语词典和Snowball英语词干词典。 12 ALTER TEXT SEARCH CONFIGURATION astro_en ADD MAPPING FOR asciiword WITH astro_syn, english_ispell, english_stem; 过滤类型的词典可以放置在词典列表中除去末尾的任何地方,放置在末尾时是无效的。使用这些词典对标记进行部分规范化,可以有效简化后继词典的处理。 父主题: 词典
  • 示例 Synonym词典可用于解决语言学相关问题,例如,为避免使单词"Paris"变成"pari",可在Synonym词典文件中定义一行"Paris paris",并将该词典放置在预定义的english_stem词典之前。 认证用的AK和SK硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全。 1 2 3 4 5 6 7 8 91011121314151617181920212223242526272829303132333435363738394041 SELECT * FROM ts_debug('english', 'Paris'); alias | description | token | dictionaries | dictionary | lexemes -----------+-----------------+-------+----------------+--------------+--------- asciiword | Word, all ASCII | Paris | {english_stem} | english_stem | {pari}(1 row)CREATE TEXT SEARCH DICTIONARY my_synonym ( TEMPLATE = synonym, SYNONYMS = my_synonyms, FILEPATH = 'obs://bucket01/obs.example.com accesskey=xxxxx secretkey=xxxxx region=cn-north-1');ALTER TEXT SEARCH CONFIGURATION english ALTER MAPPING FOR asciiword WITH my_synonym, english_stem;SELECT * FROM ts_debug('english', 'Paris'); alias | description | token | dictionaries | dictionary | lexemes -----------+-----------------+-------+---------------------------+------------+--------- asciiword | Word, all ASCII | Paris | {my_synonym,english_stem} | my_synonym | {paris}(1 row)SELECT * FROM ts_debug('english', 'paris'); alias | description | token | dictionaries | dictionary | lexemes -----------+-----------------+-------+---------------------------+------------+--------- asciiword | Word, all ASCII | Paris | {my_synonym,english_stem} | my_synonym | {paris}(1 row)ALTER TEXT SEARCH DICTIONARY my_synonym ( CASESENSITIVE=true);SELECT * FROM ts_debug('english', 'Paris'); alias | description | token | dictionaries | dictionary | lexemes -----------+-----------------+-------+---------------------------+------------+--------- asciiword | Word, all ASCII | Paris | {my_synonym,english_stem} | my_synonym | {paris}(1 row)SELECT * FROM ts_debug('english', 'paris'); alias | description | token | dictionaries | dictionary | lexemes -----------+-----------------+-------+---------------------------+------------+--------- asciiword | Word, all ASCII | Paris | {my_synonym,english_stem} | my_synonym | {pari}(1 row) 其中,同义词词典文件全名为my_synonyms.syn,所在目录为 'obs://bucket01/obs.example.com accesskey=xxxxx secretkey=xxxxx region=cn-north-1'。关于创建词典的语法和更多参数,请参见CREATE TEXT SEARCH DICTIONARY。 星号(*)可用于词典文件中的同义词结尾,表示该同义词是一个前缀。在to_tsvector()中该星号将被忽略,但在to_tsquery()中会匹配该前缀并对应输出结果(参照处理tsquery一节)。 假设词典文件synonym_sample.syn内容如下: 12345 postgres pgsqlpostgresql pgsql postgre pgsql gogle googl indices index* 创建并使用词典: 1 2 3 4 5 6 7 8 91011121314151617181920212223242526272829303132333435363738 CREATE TEXT SEARCH DICTIONARY syn ( TEMPLATE = synonym, SYNONYMS = synonym_sample);SELECT ts_lexize('syn','indices'); ts_lexize ----------- {index}(1 row)CREATE TEXT SEARCH CONFIGURATION tst (copy=simple);ALTER TEXT SEARCH CONFIGURATION tst ALTER MAPPING FOR asciiword WITH syn;SELECT to_tsvector('tst','indices'); to_tsvector ------------- 'index':1(1 row)SELECT to_tsquery('tst','indices'); to_tsquery ------------ 'index':*(1 row)SELECT 'indexes are very useful'::tsvector; tsvector --------------------------------- 'are' 'indexes' 'useful' 'very'(1 row)SELECT 'indexes are very useful'::tsvector @@ to_tsquery('tst','indices'); ?column? ---------- t(1 row)
  • pg_stat_xlog_space() 描述:显示当前DN上Xlog空间使用信息。 返回值类型:record 函数返回信息如下: 表6 pg_stat_xlog_space() 名称 类型 描述 xlog_files bigint pg_xlog目录下,去除backup、archive_status等子目录,所有识别为xlog文件的数目。 xlog_size bigint pg_xlog目录下,去除backup、archive_status等子目录,所有识别为xlog文件的文件大小之和,单位为MB。 other_size bigint pg_xlog目录下backup、archive_status等子目录文件的大小之和,单位为MB。 示例: 12345 SELECT * FROM pg_stat_xlog_space(); xlog_files | xlog_size | other_size------------+-----------+------------ 79 | 1264 | 0(1 row)
  • pgxc_stat_xlog_space() 描述:显示所有主DN上Xlog空间使用信息。 返回值类型:record 函数返回信息如下: 表7 pgxc_stat_xlog_space() 名称 类型 描述 node_name name 节点名称 xlog_files bigint pg_xlog目录下,去除backup、archive_status等子目录,所有识别为xlog文件的数目。 xlog_size bigint pg_xlog目录下,去除backup、archive_status等子目录,所有识别为xlog文件的文件大小之和,单位为MB。 other_size bigint pg_xlog目录下backup、archive_status等子目录文件的大小之和,单位为MB。 示例: 1 2 3 4 5 6 7 8 910 SELECT * FROM pgxc_stat_xlog_space(); node_name | xlog_files | xlog_size | other_size--------------+------------+-----------+------------ dn_6001_6002 | 73 | 1168 | 0 dn_6003_6004 | 73 | 1168 | 0 dn_6005_6006 | 73 | 1168 | 0 cn_5003 | 79 | 1264 | 0 cn_5001 | 72 | 1152 | 0 cn_5002 | 73 | 1168 | 0(6 rows)
  • pg_stat_get_wal_receiver() 描述:显示当前DN上所有的WAL复制接收线程的统计信息。 返回值类型:record 函数返回信息如下: 表4 pg_stat_get_wal_receiver() 名称 类型 描述 receiver_pid integer 当前receiver的pid local_role text 本地的角色 peer_role text 远端的角色 peer_state text 远端的状态 state text 当前receiver的复制状态 sender_sent_location text 发送端发送的LSN位置 sender_write_location text 发送端write的LSN位置 sender_flush_location text 发送端flush的LSN位置 sender_replay_location text 发送端replay的LSN位置 receiver_received_location text 接收端received的LSN位置 receiver_write_location text 接收端write的LSN位置 receiver_flush_location text 接收端flush的LSN位置 receiver_replay_location text 接收端replay的LSN位置 sync_percent text 同步百分比 channel text WALReceiver的信道信息
  • pg_stat_get_stream_replications() 描述:显示当前DN上所有的复制统计信息。 返回值类型:record 函数返回信息如下: 表5 pg_stat_get_stream_replications() 名称 类型 描述 local_role text 本地的角色 static_connections integer 连接统计 db_state text 数据库状态 detail_information text 详细信息 示例: 12345 SELECT * FROM pg_stat_get_stream_replications(); local_role | static_connections | db_state | detail_information------------+--------------------+----------+-------------------- Normal | 0 | Normal | Normal(1 row)
  • pg_replication_slot_advance ('slot_name', 'LSN') 描述:直接推进流复制槽到指定LSN,不输出解码结果。 参数说明: slot_name 流复制槽名称。 取值范围:字符串,不支持除字母,数字,以及(_?-.)以外的字符。 LSN 推进到的日志LSN位置,下次解码时只会输出提交位置比该LSN大的事务结果。如果输入的LSN比当前流复制槽记录的推进位置还要小,则直接返回;如果输入的LSN比当前最新物理日志LSN还要大,则推进到当前最新物理日志LSN。 取值范围:字符串(LSN,格式为xlogid/xrecoff)。 返回值类型:name, text 备注:返回值分别对应slot_name和实际推进至的LSN。
  • pg_create_logical_replication_slot('slot_name', 'plugin_name') 描述:创建逻辑复制槽。 参数说明: slot_name 流复制槽名称。 取值范围:字符串,不支持除字母,数字,以及(_?-.)以外的字符。 plugin_name 插件名称。 取值范围:字符串,当前只支持“mppdb_decoding”。 返回值类型:name, text 备注:第一个返回值表示slot_name,第二个返回值表示该逻辑复制槽解码的起始LSN位置。
  • pg_logical_slot_peek_changes('slot_name', 'LSN', upto_nchanges, 'options_name', 'options_value') 描述:解码并不推进流复制槽(下次解码可以再次获取本次解出的数据)。 参数说明: slot_name 流复制槽名称。 取值范围:字符串,不支持除字母,数字,以及(_?-.)以外的字符。 LSN 日志的LSN,表示只解码小于等于此LSN的日志。 取值范围:字符串(LSN,格式为xlogid/xrecoff),如'1/2AAFC60'。为NULL时表示不对解码截止的日志位置做限制。 upto_nchanges 解码条数(包含begin和commit)。假设一共有三条事务,分别包含3、5、7条记录,如果upto_nchanges为4,那么会解码出前两个事务共8条记录。解码完第二条事务时发现解码条数记录大于等于upto_nchanges,会停止解码。 取值范围:非负整数。 LSN和upto_nchanges中任一参数达到限制,解码都会结束。 options:此项为可选参数。 include-xids 解码出的data列是否包含xid信息。 取值范围:0或1,默认值为1。 0:设为0时,解码出的data列不包含xid信息。 1:设为1时,解码出的data列包含xid信息。 skip-empty-xacts 解码时是否忽略空事务信息。 取值范围:0或1,默认值为0。 0:设为0时,解码时不忽略空事务信息。 1:设为1时,解码时会忽略空事务信息。 include-timestamp 解码信息是否包含commit时间戳。 取值范围:0或1,默认值为0。 0:设为0时,解码信息不包含commit时间戳。 1:设为1时,解码信息包含commit时间戳。 返回值类型:text, uint, text 备注:函数返回解码结果,每一条解码结果包含三列,对应上述返回值类型,分别表示LSN位置、xid和解码内容。
  • pg_logical_slot_get_changes('slot_name', 'LSN', upto_nchanges, 'options_name', 'options_value') 描述:解码并推进流复制槽。 参数说明: 与pg_logical_slot_peek_changes一致,详细内容请参见pg_logical_slot_peek_changes('slot_name', 'LSN', upto_nchanges, 'options_name', 'options_value')。
  • pg_stat_get_wal_senders() 描述:显示当前DN上所有的WAL复制发送线程的统计信息。 返回值类型:record 函数返回信息如下: 表3 pg_stat_get_wal_senders()字段 名称 类型 描述 pid bigint 线程pid sender_pid integer 当前sender的pid local_role text 本地的角色 peer_role text 对端的角色 peer_state text 对端的状态 state text 当前sender的复制状态 catchup_start timestamp with time zone catchup启动的时间 catchup_end timestamp with time zone catchup结束的时间 sender_sent_location text 发送端发送的LSN位置 sender_write_location text 发送端write的LSN位置 sender_flush_location text 发送端flush的LSN位置 sender_replay_location text 发送端replay的LSN位置 receiver_received_location text 接收端received的LSN位置 receiver_write_location text 接收端write的LSN位置 receiver_flush_location text 接收端flush的LSN位置 receiver_replay_location text 接收端replay的LSN位置 sync_percent text 同步百分比 sync_state text 同步状态(异步复制,同步复制,还是潜在同步者) sync_priority integer 同步复制的优先级(0表示异步) sync_most_available text 在备机同步失败时,是否阻塞主机 channel text WALSender的信道信息
  • pg_create_physical_replication_slot ('slot_name', isDummyStandby) 描述:创建物理复制槽。 参数说明: slot_name 流复制槽名称。 取值范围:字符串,不支持除字母,数字,以及(_?-.)以外的字符。 isDummyStandby 复制槽是否为从备。 取值范围:布尔值,支持true或false。 返回值类型:name, text 备注:第一个返回值表示slot_name,第二个返回值表示该物理复制槽解码的起始LSN位置。
  • pg_get_replication_slots() 描述:显示当前DN上所有的复制槽信息。 返回值类型:record 函数返回信息如下: 表1 pg_get_replication_slots()字段 名称 类型 描述 slot_name text 复制槽的名称 plugin name 逻辑复制槽对应的输出插件名 slot_type text 复制槽的类型 datoid oid 复制槽的数据库OID active boolean 复制槽是否为激活状态 xmin xid 复制槽事务标识 catalog_xmin text 逻辑复制槽对应的最早解码事务标识 restart_lsn text 复制槽的Xlog文件信息 dummy_standby boolean 复制槽是否为从备 示例: 12345 SELECT * FROM pg_get_replication_slots(); slot_name | plugin | slot_type | datoid | active | xmin | catalog_xmin | restart_lsn | dummy_standby-----------------+--------+-----------+--------+--------+------+--------------+-------------------+--------------- gs_roach_common | | physical | 0 | f | | 602861775 | FFFFFFFF/FFFFFFFF | f(1 row)
  • pg_stat_get_data_senders() 描述:显示当前DN上所有的数据页复制发送线程的统计信息。 返回值类型:record 函数返回信息如下: 表2 pg_stat_get_data_senders()字段 名称 类型 描述 pid bigint 线程pid sender_pid integer 当前sender的pid local_role text 本地的角色 peer_role text 对端的角色 state text 当前sender的复制状态 catchup_start timestamp with time zone catchup启动的时间 catchup_end timestamp with time zone catchup结束的时间 queue_size text 数据队列大小 queue_lower_tail text 数据队列尾1位置 queue_header text 数据队列头位置 queue_upper_tail text 数据队列尾2位置 send_position text 发送端发送的位置 receive_position text 接收端接收的位置 catchup_type text catchup方式为全量还是增量 catchup_bcm_filename text catchup当前执行的bcm文件 catchup_bcm_finished integer catchup已操作完成的bcm文件数量 catchup_bcm_total integer catchup总共需要操作的bcm文件数量 catchup_percent text catchup已经操作完成的百分比 catchup_remaining_time text catchup预估剩余时间
  • 值存储数据类型解析 查找与目标字段准确的匹配。 试着将表达式直接转换成目标类型。如果已知这两种类型之间存在一个已登记的转换函数,那么直接调用该转换函数即可。如果表达式是一个未知类型文本,该文本字符串的内容将交给目标类型的输入转换过程。 检查目标类型是否有长度转换。长度转换是一个从某类型到自身的转换。如果在pg_cast表里面找到一个,那么在存储到目标字段之前先在表达式上应用。这样的转换函数总是接受一个额外的类型为integer的参数,它接收目标字段的atttypmod值(实际上是其声明长度,atttypmod的解释随不同的数据类型而不同),并且它可能接受一个boolean类型的第三个参数,表示转换是显式的还是隐式的。转换函数负责施加那些长度相关的语义,比如长度检查或者截断。
  • 示例 character存储类型转换。对一个目标列定义为character(20)的语句,下面的语句显示存储值的长度正确: 1 2 3 4 5 6 7 8 910111213 CREATE TABLE x1( customer_sk integer, customer_id char(20), first_name char(6), last_name char(8))with (orientation = column,compression=middle)distribute by hash (last_name);INSERT INTO x1(customer_sk, customer_id, first_name) VALUES (3769, 'abcdef', 'Grace');SELECT customer_id, octet_length(customer_id) FROM x1; 图1 存储值长度 两个unknown文本缺省解析成text,这样就允许||操作符解析成text连接。然后操作符的text结果转换成bpchar("空白填充的字符型", character类型内部名称)以匹配目标字段类型。不过,从text到bpchar的转换是二进制兼容的,这样的转换是隐含的并且实际上不做任何函数调用。最后,在系统表里找到长度转换函数bpchar(bpchar, integer, boolean) 并且应用于该操作符的结果和存储的字段长。这个类型相关的函数执行所需的长度检查和额外的空白填充。
  • 两阶段事务 GaussDB(DWS)属于分布式share-nothing架构,表的数据分布在不同的节点上。客户端的一条或多条语句可能会同时修改多个节点上的数据,这种情况下,会产生分布式事务。GaussDB(DWS)采用两阶段提交事务来保证分布式事务中数据的一致性和事务的原子性。顾名思义,两阶段提交就是将事务提交划分为两个阶段,通常针对的是包含写操作的事务。当写操作将数据写入不同的节点时,需要满足事务的原子性要求,要么全部提交,要么全部回滚。 不支持两阶段的场景如下: 不支持显示的两阶段提交语法PREPARE TRANSACTION。 12 BEGIN;PREPARE TRANSACTION 'p1'; 不支持在两阶段事务中修改系统表的文件映射关系。 1 REINDEX TABLE pg_class; 不支持在跨节点的事务中提交导出事务快照。 1234 BEGIN;CREATE TABLE t1(a int);SELECT pg_export_snapshot();END;
  • 事务的属性 事务具有以下四个标准属性,通常根据首字母缩写为ACID。 Atomicity(原子性):事务中的全部操作在数据库中是不可分割的,整个事务中的所有操作要么全部完成,要么全部失败,对于一个事务来说,不能只执行其中的一部分操作。 比如: A给B转账,A扣除500元 ,B增加500元。整个事务的操作要么全部成功,要么全部失败,不能出现A扣钱,但是B不增加的情况。如果原子性不能保证,就会出现一致性问题。 Consistency(一致性):在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的数据必须完全符合所有的预设规则,这包含数据的精确度、串联性以及后续数据库可以自发性地完成预定的工作。 比如:A给B转账,A扣除500元 ,B增加500元,扣除的钱-500与增加的钱+500,相加应该为0。如从A账户转账500元到B账户,不管操作成功与否,A和B的存款总额是不变的。 Isolation(隔离性):一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。 数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(serializable)。 Durability(持久性):一旦事务提交,则其所做的修改就会永久保存到数据库中。即使系统故障,已经提交的修改数据也不会丢失。 表1 ACID用途 ACID 属性 用途 Atomicity 原子性 并发控制,故障恢复。 Consistency 一致性 SQL的完整性约束(主键约束、外键约束)。 Isolation 隔离性 并发控制。 Durability 持久性 故障恢复。 常用的并发控制技术有基于锁的并发控制和基于时间戳的并发控制,GaussDB(DWS)数据库针对DDL语句采用两阶段锁技术,而针对DML语句则采用多版本控制技术(Multi-Version Concurrency Control,MVCC)。GaussDB(DWS)数据库的故障恢复采用WAL日志的方式来实现,目前主要支持Redo日志,通过Redo日志和MVCC可以保证事务读写的一致性。
  • 事务控制语法 启动事务 GaussDB(DWS)通过START TRANSACTION和BEGIN语法启动事务,请参考START TRANSACTION和BEGIN。 设置事务 GaussDB(DWS)通过SET TRANSACTION或者SET LOCAL TRANSACTION语法设置事务,请参考SET TRANSACTION。 提交事务 GaussDB(DWS)通过COMMIT或者END可完成提交事务的功能,即提交事务的所有操作,请参考COMMIT | END。 回滚事务 回滚是在事务运行的过程中发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的操作全部撤销。请参考ROLLBACK。 数据库中收到的一次执行请求(不在事务块中),如果含有多条语句,将会被打包成一个事务,如果其中有一个语句失败,那么整个请求都将会被回滚。 其他事务操作 SAVEPOINT用于在当前事务里建立一个新的保存点。即在一个事务中标记一个位置并且允许做部分回滚。用户可以回滚在一个保存点之后执行的命令但保留该保存点之前执行的命令。请参考SAVEPOINT。 ROLLBACK TO SAVEPOINT回滚事务到一个保存点。隐含地删除所有在该保存点之后建立的保存点。请参考ROLLBACK TO SAVEPOINT。 RELEASE SAVEPOINT删除一个事务内的保存点。请参考RELEASE SAVEPOINT。
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全