华为云用户手册

  • 现象五:多终端独立版网站到期续费后,浏览器显示403 图7 显示403 问题原因:浏览器显示403时,表示 域名 DNS配置正确,企业门户站点未绑定域名。由于网站到期未及时续费,到达华为云规定的宽限期后,企业门户会自动解绑域名。 解决方法: 查看浏览器域名,以www.xxx.cn为例。 图8 浏览器访问域名 登录企业门户控制台界面,选择站点资源,单击“网站设计”。 进入后台管理页面,单击“绑定域名”,查看已绑定域名是否已存在。 若域名不存在,请输入访问浏览器的域名地址:www.xxx.cn,选择需要绑定的终端,单击“确定”即可。 图9 添加浏览器所访问的域名 验证网站,您可通过域名访问网站。 图10 访问网站
  • 网站到期,续费后,无法访问? 网站到期未及时续费,到达华为云规定的宽限期后,企业门户会自动解绑域名。这种情况下,您续费后,需要重新绑定域名。 企业门户多终端独立版支持以下三种情况的域名解析: 您在华为云购买域名,使用华为云解析服务。 您在第三方购买域名,使用华为云解析服务。 您在第三方购买域名,使用第三方解析服务。 企业门户除独立企业版外,仅支持CNAME解析。企业版支持CNAME解析,也支持使用IP地址进行A解析。 企业门户多终端自适应版支持以下两种情况的域名解析: 您在华为云购买域名,使用华为云解析服务。 您在第三方购买域名,使用第三方解析服务。
  • 域名解析后,不添加www访问失败? 检查是否使用空头域名访问网站。如果想要使用空头域名访问网站,需要在解析中增加空主机记录。 解析并绑定包含www的域名请参考:多终端独立版和多终端自适应版。 解析并绑定不带www的域名请参考:多终端独立版和多终端自适应版。 购买中国大陆节点的企业门户都需要在华为云进行网站备案。 通过配置域名解析与绑定,将域名解析至企业门户,实现域名与IP地址的转换,具体步骤请参考域名配置流程:多终端独立版和多终端自适应版。 以多终端独立营销版增加空主机记录为例。 方法一:使用域名配置助手解析并绑定不带www的域名。 登录企业门户控制台,选择域名所需绑定的站点,单击“前往配置”。 图4 域名配置 在域名配置助手中,单击“添加”,输入域名,单击“确定”。 图5 添加空主机记录 选择4中添加的域名,单击“一键解析”。 在弹出的“一键解析”对话框中,单击“确定”。 图6 一键解析 确认该域名未添加任何解析记录集,否则一键解析将报错。 解析成功后,解析状态变为“解析成功”,这时后台在DNS中增加一条解析记录。 图7 解析成功 如果您需要删除解析记录,请在DNS控制台删除,具体请参考删除记录集。 单击“绑定域名”,弹出“绑定域名”对话框,单击“确定”。 绑定成功后,绑定状态变为“绑定成功”。 图8 绑定成功 绑定成功后,您可以通过绑定的域名访问您的网站。 如果您需要关闭网站,不再通过域名访问打开网站,选择需要解绑的域名,单击“取消绑定”即可。 解析并绑定域名 后,如果尚未添加SSL证书,请使用HTTP协议打开网站,而非HTTPS。例如:绑定“cloudsite.com”域名,请使用“http://cloudsite.com”访问网站,请勿使用“https://cloudsite.com”访问网站。 方法二:手动添加解析记录集解析并绑定不带www的域名。 登录企业门户控制台,查看待解析站点,获取并记录“CNAME解析”值。如果为独立企业版,获取并记录“IPv4”地址。 图9 获取CNAME解析 图10 独立企业版获取IPv4地址 在“云解析”控制台,单击域名名称,进入“解析记录”界面。 单击“添加记录集”,弹出“添加记录集”对话框。增加如图11所示解析记录,单击“确定”。 图11 添加空主机记录 主机记录:不填 类型:选择“CNAME – 将域名指向另外一个域名” 值:填写1中记录的“CNAME解析”值 添加完成后,系统自动增加如图12所示记录。 图12 解析记录 返回企业门户控制台,单击“网站设计”。 进入“建站管理后台”界面,单击“绑定域名”。 图13 建站管理后台 在弹出的对话框中,添加输入cloudsite.com,单击“确定”。 图14 绑定域名 显示“添加成功”时,表示网站已经成功绑定域名。 如果您需要关闭网站,不再通过域名访问打开网站,在已绑定的域名行,单击“删除域名”即可。 解析并绑定域名后,如果尚未添加SSL证书,请使用HTTP协议打开网站,而非HTTPS。例如:绑定“cloudsite.com”域名,请使用“http://cloudsite.com”访问网站,请勿使用“https://cloudsite.com”访问网站。
  • 域名先绑定还是先解析? 建议您先解析域名,然后再绑定。 企业门户多终端独立版支持以下三种情况的域名解析: 您在华为云购买域名,使用华为云解析服务。 您在第三方购买域名,使用华为云解析服务。 您在第三方购买域名,使用第三方解析服务。 企业门户除独立企业版外,仅支持CNAME解析。企业版支持CNAME解析,也支持使用IP地址进行A解析。 企业门户多终端自适应版支持以下两种情况的域名解析: 您在华为云购买域名,使用华为云解析服务。 您在第三方购买域名,使用第三方解析服务。
  • 企业门户如何进行域名解析和绑定? 企业门户支持以下三种情况的域名解析: 您在华为云购买域名,使用华为云解析服务,操作指导请参考多终端独立版和多终端自适应版。 您在第三方购买域名,使用华为云解析服务,操作指导请参考多终端独立版和多终端自适应版。 您在第三方购买域名,使用第三方解析服务,操作指导请参考多终端独立版和多终端自适应版。 企业门户除独立企业版外,仅支持CNAME解析。企业版支持CNAME解析,也支持使用IP地址进行A解析。
  • 最小化配置 IAM 和工作空间角色权限 DataArts Studio 权限体系如图1所示。DataArts Studio的IAM系统角色包括DAYU Administrator、DAYU User和DataArts Studio User;工作空间角色是基于IAM角色DAYU User或DataArts Studio User进一步授予的。 图1 权限体系 当您为IAM用户配置了DataArts Studio相关权限后,可能会出现如下非必需权限过大的风险: IAM角色依赖服务权限过大。 DAYU Administrator和DAYU User系统角色默认预置了依赖服务(如 MRS 、DWS等相关服务)的管理员权限。当为用户配置这两个系统角色之一后,会导致其拥有依赖服务的管理员权限。 工作空间中其他组件权限不受控制。 工作空间中的预置角色(例如管理员、开发者、运维者等)默认具备该工作空间内所有组件的操作权限。当为用户授权工作空间开发者角色后,会导致其拥有相关操作组件之外的其他组件的相关操作权限。 因此,为了避免IAM用户权限过大的风险,您需要为用户进行最小化授权,详情请参见用户授权最小化权限实践。
  • 启用全方位数据安全保护 DataArts Studio数据安全以数据为中心,构建全链路 数据湖 安全的解决方案,同时支持对服务资源进行管控,以此全方位保障数据湖安全。为安全起见,建议您配置如下数据安全能力: 配置数据权限访问控制。按不同角色、用户、用户组进行数据权限分配,保障数据的访问安全。详见数据权限访问控制。 配置服务资源访问控制。对队列权限、数据连接、委托等资源进行管控,对各组件目录权限、数据下载权限进行限制,保障资源不被滥用。详见服务资源访问控制。 配置敏感数据识别策略。通过自定义或内置的规则自动发现敏感数据,并进行数据分级分类标注。详见敏感数据识别。 配隐私数据保护策略。通过数据脱敏、数据水印、文件水印等方式来防止敏感数据遭到有意或无意的误用、泄漏或盗窃。详见隐私保护管理。 数据安全能力配置完成后,推荐您通过数据安全诊断洞察数据安全风险,保障数据使用过程的安全可靠。
  • 管控默认委托过大权限 云服务委托用于将相关云服务的操作权限委托给DataArts Studio,让DataArts Studio以租户身份使用这些云服务,进行一些任务调度、资源运维等工作。在历史版本中,DataArts Studio自动创建的dlg_agency云服务委托,默认包含 DLI 、DWS、MRS、RDS、OBS、 SMN 、KMS等相关服务的管理员权限。 因此为了避免dlg_agency委托权限过大的风险,您需要为委托进行最小化授权,详情请参见委托授权最小化权限实践。
  • CPU管理 目前支持“共享配额”和“专属限额”两种CPU管理方式: CPU共享配额:在CPU系统繁忙的情况下,不同资源池按照共享配额配置分配CPU资源;在CPU系统空闲的情况下,该配置不生效。 CPU专属限额:限制资源池使用的CPU核数上限,无论CPU系统繁忙或者空闲,该资源池上的作业都无法突破该限额配置。 在资源池页面“资源配置”一栏,您可以修改当前资源池的CPU共享配额和专属限额。 共享配额和专属限额的管理方式各有优劣,共享配额的管理方式可以实现CPU资源的充分利用,但是资源池之间隔离不彻底,可能影响查询性能;专属限额的管理方式可以实现CPU资源的绝对隔离,但是在资源池CPU资源空闲时,会造成资源的浪费。 CPU专属限额仅8.1.3及以上集群版本支持。
  • 并发管理 并发,即资源池中的最大查询并发数。并发管理作为运行前管理,用于限制查询并发运行的数量,通过限制查询并发数降低资源争抢,保证资源的有序高效利用。 在资源池页面“短查询配置”一栏,您可以通过开关键决定是否开启短查询加速功能。如果需要对简单语句并发数(默认值为-1,0 或-1表示不控制)进行修改,可选择打开短查询加速。 并发管理规则如下: 短查询加速开启,复杂查询受资源池并发控制,简单查询受短查询并发控制。 短查询加速关闭,复杂查询和简单查询均受资源池并发控制,短查询并发控制无效。
  • 异常规则 异常规则用于异常查询的识别和快速处理,防止“低质量SQL”长时间占用大量资源,导致其他查询阻塞或性能下降。 在资源池页面“关联异常规则”一栏,可浏览当前资源池中已绑定的异常规则,绑定新异常规则,解绑已有异常规则。 8.2.1及以上集群版本支持降级异常规则(存算分离集群不支持降级异常规则),所有异常规则都支持降级行为,降级后仅网络资源抢占降至低优先级,即在正常查询无网络请求时,才会调度降级查询的网络请求。 关联、解绑异常规则仅8.2.0及以上集群版本支持。
  • 内存管理 内存资源,即资源池所占用的内存百分比。 内存管理的目的:防止数据库系统占用内存过高导致内存溢出(OOM)和实现资源池之间的内存隔离和限制。为满足这两个目的,资源管理从以下两方面进行内存管理: 全局内存管理 为防止数据库系统使用内存过大导致OOM,设置数据库系统全局内存上限(max_process_memory),对数据库全局内存进行管理。全局内存管理包含运行前管理和运行中管理,运行中管理防止实际使用内存超限,运行前管理防止查询执行过程中报错,具体如下: 运行前管理: 一方面慢车道运行的所有查询估算内存都会进行统计,另一方面数据库系统实际使用内存会进行反馈,当实际使用内存大于统计内存时,对统计内存进行调整。查询运行前,判断全局剩余内存能否满足查询运行,满足情况下查询可以直接运行,否则查询需要排队,等待其他查询释放资源后运行。 运行中管理: 查询执行过程中实际使用的内存也会进行统计,查询在申请内存时判断内存使用是否超限,内存超限查询报错,已用内存释放。 资源池内存管理 资源池内存管理属于专属限额的管理方式,即资源池分配多少内存就只能使用多少内存,空闲出来的内存其他资源池不能使用。 资源池内存分配采用百分比方式,取值范围0~100。0表示资源池不进行内存管理,100表示资源池进行内存管理且可使用全局所有内存。 所有资源池分配的内存百分比之和不能超过100。资源池内存管理仅管控慢车道查询,且只包含运行前管理,处理逻辑与全局内存运行前管理类似。资源池慢车道查询运行前,进行估算内存统计,当统计内存大于资源池内存时,查询需要排队,等待资源池内其他查询运行结束释放资源后才能运行。
  • 查看运维任务 登录 GaussDB (DWS)管理控制台。 在集群列表中单击指定集群名称。 进入“集群详情”页面,切换至“智能运维”页签。 在运维详情部分切换至运维状态模块。 单击指定运维任务名称旁箭头,将显示运维任务运行的详细信息。 运维任务:Vacuum 状态:等待中、运行中、已完成、失败。 完成度 时间窗剩余 执行时间窗(本地时间) Vacuum的总表数量 准备Vacuum的表数量 正在Vacuum的表数量 完成Vacuum的表数量 失败Vacuum的表数量 此次Vacuum清理空间 其中正在Vacuum的表,准备Vacuum的表,已完成Vacuum的表和Vacuum失败的表最多各显示100张。 如果集群只读,智能运维任务则无法执行INSERT语句,可能会遇到任务状态一直为运行中,此时运行中为历史状态,代表在设置时间内未完成。如果手动暂停该任务并且未调度,任务状态可能一直处于等待中,请尽快解除只读并联系技术支持人员更新任务状态。 父主题: Vacuum回收GaussDB(DWS)空间
  • 告警解释 GaussDB(DWS)每30秒采集集群各节点所有磁盘的使用情况。 如果存在磁盘最近10分钟(可配置)内的最大使用率超过80%(可配置),则上报节点数据盘使用率超阈值的重要告警;如果平均使用率低于75%(即上报阈值减去5%),则消除该重要告警。 如果存在磁盘最近10分钟(可配置)内的最大使用率超过85%(可配置),则上报节点数据盘使用率超阈值的紧急告警;如果平均使用率低于80%(即上报阈值减去5%),则消除该紧急告警。 如果存在磁盘的最大使用率一直大于上报阈值,那么在24小时(可配置)后将再次发起告警。
  • 背景信息 GaussDB(DWS)支持在变更操作前(扩/缩容、经典规格变更、升级)进行集群巡检,即在对应变更页面单击“立即巡检”按钮后会巡检当前集群的健康状态和集群指标是否满足变更要求,检查通过后可开始变更。如果巡检不通过,可打开巡检详情,查看不通过的巡检项,根据详情说明处理不通过的巡检项。巡检项检查标准详情请参见表1。 该特性仅8.1.1及以上集群版本支持。 如果用户无法处理不通过的巡检项,请联系技术支持人员。
  • 绑定企业项目 在GaussDB(DWS)中,用户可以在创建集群时为集群选择所属的企业项目,从而将GaussDB(DWS)集群与企业项目进行关联,详情请参见创建GaussDB(DWS)存算一体集群。在选择“企业项目”的下拉列表中,将显示用户在企业项目服务中已创建的项目。系统还内置了一个缺省的企业项目“default”,如果用户没有为集群选择企业项目,将使用缺省项目“default”。 注意,目前企业项目服务仍处于公测期间,仅允许有公测权限的用户设置企业项目,普通用户无法看到企业项目相关信息。 在集群创建过程中,如果集群与企业项目绑定成功,则集群创建成功,如果绑定失败,系统会发送告警,集群就会创建失败。 在为GaussDB(DWS)集群创建快照时,会同时保存集群与企业项目的关联关系,在恢复集群时,也会恢复企业项目的关联关系。 当删除GaussDB(DWS)集群时,GaussDB(DWS)集群与企业项目的关联关系就会被自动删除。
  • 将集群迁入或迁出企业项目 一个GaussDB(DWS)集群只能关联一个企业项目。当集群创建成功后,可以在企业管理的控制台上,执行迁出操作,将GaussDB(DWS)集群从当前所属的企业项目中迁出到另一个企业项目中;或者执行迁入操作,在指定的企业项目中迁入另一个企业项目中的GaussDB(DWS)集群。迁入迁出后,GaussDB(DWS)集群与新的企业项目进行关联,GaussDB(DWS)集群与原企业项目的关联关系将被自动解除。 迁入的详细操作,请参考《企业管理用户指南》的为企业项目迁入资源。 迁出的详细操作,请参考《企业管理用户指南》的迁出企业项目资源。
  • 查看企业项目 在集群创建成功后,您可以在集群列表和集群详情页面查看集群关联的企业项目。用户只能查询到有访问权限的项目下的集群资源。 在集群管理页面的集群列表中,查看集群所属的企业项目。 图1 查看企业项目 在集群列表中,找到所需要的集群,然后单击集群名称,进入“集群详情”页面,可以查看与集群关联的企业项目。单击企业项目的名称,可以跳转到企业管理的控制台页面对该企业项目进行查看或编辑。 图2 查看集群的企业项目 同时,在企业管理的控制台上,查询指定项目中的资源列表时,也可以查询到GaussDB(DWS)服务的资源。
  • 自动快照概述 自动快照采用差异增量备份,第一次创建自动快照为全量备份,以后每间隔一段时间做一次全量备份,全量备份作为基础版本。两次全量备份之间都是做增量备份,增量备份基于前一次备份所发生的更改进行记录。 在恢复快照时,GaussDB(DWS)会将最近一次的全量备份到本次备份之间的所有备份一起用于恢复集群,因此不会产生数据丢失。 为了保证每个增量快照都能够正常进行数据恢复,如果增量快照的保存时间超过了保留天数,GaussDB(DWS)不会立即删除过期的增量快照,而是仍然保留这部分快照,以便提供给后续其他增量快照恢复集群时使用,直到完成下一次全量快照,GaussDB(DWS)才会一并删除已过期的上一次的全量自动快照和相关的增量快照。 图1 快照备份过程 集群创建成功后,自动快照默认处于启用状态。当集群启用了自动快照时,GaussDB(DWS)将按照设定的时间和周期以及快照类型自动创建快照,默认为每8小时做一次增量备份,每周做一次全量备份。用户也可以对集群设置自动快照策略,并根据自身需求,对集群设置一个或多个自动快照策略。如果用户未配置全量备份策略,则每15次增量备份做一次全量备份。GaussDB(DWS)管理控制台设置集群的自动快照策略,具体操作请参见设置自动快照策略。 自动快照有保留期,可设置为1~31天,默认为7天,系统会在保留期结束时删除到期快照。该保留期为用户可见快照的保留期,如果存在增量快照未到期,为保证快照可用,前置增量快照和全量快照不会立即物理删除,已到期的快照为隐藏状态,用户不可见。待全部增量快照都到期后,前置隐藏的快照才实际物理删除。如果需要将自动快照保留更长时间,可以创建一份副本作为手动快照。自动快照会保留至保留期结束,而手动快照在手动删除前将会一直保留。如何复制自动快照,详情见复制自动快照。 父主题: 自动快照
  • 概述 阈值告警相关概念: 告警规则:告警规则由告警规则名称,告警规则描述,规则绑定集群列表,告警策略触发关系,告警策略项构成。一条告警规则可绑定某个指定集群或所有集群,拥有一个或多个告警策略。其中,告警策略之间组合关系由“策略触发关系”选项描述。告警规则的阈值触发和抑制条件由每条告警策略描述。 告警策略:为某个告警指标指定的触发条件,抑制条件,告警级别的组合称为告警策略。 告警指标:数据库集群的某个指标项,一般是一个时间序列数据,例如:节点CPU使用率,查询触发下盘量等。 告警规则分类: 默认规则:GaussDB(DWS)阈值告警模块的最佳实践。 自定义规则:用户可自由选择或组合监控指标形成个性化的告警规则。目前版本仅支持用户自定义schema使用率告警规则。 告警规则操作: 修改:修改告警规则的选项。所有告警规则都可以修改编辑,但默认告警规则只能修改部分选项,而自定义告警规则可以修改全部选项。 启用/停用:启用或停用告警规则。所有的告警规则都可以启用/停用,启用后告警规则会被告警引擎纳入检查列表,可以正常触发。停用后的告警规则将被告警引擎移出检查列表,不会触发该规则检查。 删除:删除告警规则。只有自定义告警规则可以被删除,用户无法删除默认告警规则。
  • 告警解释 用户业务查询执行过程中,数据库可能会选择将临时结果暂存到磁盘,简称算子下盘。 GaussDB(DWS)每60秒通过GS_WLM_SESSION_STATIS TICS 视图检测CN上正在执行的作业的负载管理记录,并计算所有下盘DN的最大下盘数据量。 如果10分钟(可配置)内存在SQL的下盘量超过5GB(可配置),则上报查询语句触发下盘量超阈值;当集群不存在符合告警条件的SQL语句时,自动消除该告警。修改告警配置详情请参见修改告警规则。 如果一直存在能够引发告警的阻塞SQL,那么在24小时(可配置)后将再次发起告警。
  • Schema粒度快照概述 schema快照是GaussDB(DWS)集群在某一时间点某些schema集的数据备份,记录了这一时刻集群指定schema的所有业务数据。用户根据业务需要备份集群的schema数据时,可以在“快照管理”页面创建集群的schema粒度快照。 手动创建的细粒度快照可以随时创建,在创建成功后会一直保存,直到在GaussDB(DWS)控制台将此快照删除。 如果当前控制台界面不支持该功能,请联系技术支持人员。 手动创建的集群的schema快照支持备份到OBS服务、NFS的介质。 待创建schema粒度快照的集群状态必须为“可用”或“非均衡”。
  • 在Linux环境使用PyGreSQL第三方库连接集群 以root用户登录Linux环境。 执行以下命令创建python_dws.py文件。 1 vi python_dws.py 请复制粘贴以下内容放入python_dws.py文件中: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 #!/usr/bin/env python3 # _*_ encoding:utf-8 _*_ from __future__ import print_function import pg def create_table(connection): print("Begin to create table") try: connection.query("drop table if exists test;" "create table test(id int, name text);") except pg.InternalError as e: print(e) else: print("Table created successfully") def insert_data(connection): print("Begin to insert data") try: connection.query("insert into test values(1,'number1');") connection.query("insert into test values(2,'number2');") connection.query("insert into test values(3,'number3');") except pg.InternalError as e: print(e) else: print("Insert data successfully") def update_data(connection): print("Begin to update data") try: result = connection.query("update test set name = 'numberupdated' where id=1;") print("Total number of rows updated :", result) result = connection.query("select * from test order by 1;") rows = result.getresult() for row in rows: print("id = ", row[0]) print("name = ", row[1], "\n") except pg.InternalError as e: print(e) else: print("After Update, Operation done successfully") def delete_data(connection): print("Begin to delete data") try: result = connection.query("delete from test where id=3;") print("Total number of rows deleted :", result) result = connection.query("select * from test order by 1;") rows = result.getresult() for row in rows: print("id = ", row[0]) print("name = ", row[1], "\n") except pg.InternalError as e: print(e) else: print("After Delete,Operation done successfully") def select_data(connection): print("Begin to select data") try: result = connection.query("select * from test order by 1;") rows = result.getresult() for row in rows: print("id = ", row[0]) print("name = ", row[1]) except pg.InternalError as e: print(e) print("select failed") else: print("Operation done successfully") if __name__ == '__main__': try: conn = pg.DB(host='10.154.70.231', port=8000, dbname='gaussdb', # 需要连接的database user='dbadmin', passwd='password') # 数据库用户密码 except pg.InternalError as ex: print(ex) print("Connect database failed") else: print("Opened database successfully") create_table(conn) insert_data(conn) select_data(conn) update_data(conn) delete_data(conn) conn.close() 或使用dbapi接口实现: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 #!/usr/bin/python # -*- coding: UTF-8 -*- from __future__ import print_function import pg import pgdb def create_table(connection): print("Begin to create table") try: cursor = connection.cursor() cursor.execute("drop table if exists test;" "create table test(id int, name text);") connection.commit() except pg.InternalError as e: print(e) else: print("Table created successfully") cursor.close() def insert_data(connection): print("Begin to insert data") try: cursor = connection.cursor() cursor.execute("insert into test values(1,'number1');") cursor.execute("insert into test values(2,'number2');") cursor.execute("insert into test values(3,'number3');") connection.commit() except pg.InternalError as e: print(e) else: print("Insert data successfully") cursor.close() def update_data(connection): print("Begin to update data") try: cursor = connection.cursor() cursor.execute("update test set name = 'numberupdated' where id=1;") connection.commit() print("Total number of rows updated :", cursor.rowcount) cursor.execute("select * from test;") rows = cursor.fetchall() for row in rows: print("id = ", row[0]) print("name = ", row[1], "\n") except pg.InternalError as e: print(e) else: print("After Update, Operation done successfully") def delete_data(connection): print("Begin to delete data") try: cursor = connection.cursor() cursor.execute("delete from test where id=3;") connection.commit() print("Total number of rows deleted :", cursor.rowcount) cursor.execute("select * from test;") rows = cursor.fetchall() for row in rows: print("id = ", row[0]) print("name = ", row[1], "\n") except pg.InternalError as e: print(e) else: print("After Delete,Operation done successfully") def select_data(connection): print("Begin to select data") try: cursor = connection.cursor() cursor.execute("select * from test;") rows = cursor.fetchall() for row in rows: print("id = ", row[0]) print("name = ", row[1], "\n") except pg.InternalError as e: print(e) print("select failed") else: print("Operation done successfully") cursor.close() if __name__ == '__main__': try: conn = pgdb.connect(host='10.154.70.231', port='8000', database='gaussdb', # 需要连接的database user='dbadmin', password='password') # 数据库用户密码 except pg.InternalError as ex: print(ex) print("Connect database failed") else: print("Opened database successfully") create_table(conn) insert_data(conn) select_data(conn) update_data(conn) delete_data(conn) conn.close() 按照实际集群信息,修改python_dws.py文件中的集群公网访问地址、集群端口号、数据库名称、数据库用户名、数据库密码。 PyGreSQL接口不提供重试连接的能力,您需要在业务代码中实现重试处理。 1 2 3 4 5 conn = pgdb.connect(host='10.154.70.231', port='8000', database='gaussdb', # 需要连接的database user='dbadmin', password='password') # 数据库用户密码 执行以下命令,使用PyGreSQL第三方库连接集群。 1 python python_dws.py
  • 使用约束 由于PyGreSQL是基于PostgreSQL的客户端接口,它的功能GaussDB(DWS)并不能完全支持。具体支持情况请见下表。 以下接口支持情况是基于Python 3.8.5及PyGreSQL 5.2.4版本。 表1 DWS对PyGreSQL主要接口支持情况 PyGreSQL 支持 备注 Module functions and constants connect – Open a PostgreSQL connection Y - get_pqlib_version – get the version of libpq Y - get/set_defhost – default server host [DV] Y - get/set_defport – default server port [DV] Y - get/set_defopt – default connection options [DV] Y - get/set_defbase – default database name [DV] Y - get/set_defuser – default database user [DV] Y - get/set_defpasswd – default database password [DV] Y - escape_string – escape a string for use within SQL Y - escape_bytea – escape binary data for use within SQL Y - unescape_bytea – unescape data that has been retrieved as text Y - get/set_namedresult – conversion to named tuples Y - get/set_decimal – decimal type to be used for numeric values Y - get/set_decimal_point – decimal mark used for monetary values Y - get/set_bool – whether boolean values are returned as bool objects Y - get/set_array – whether arrays are returned as list objects Y - get/set_bytea_escaped – whether bytea data is returned escaped Y - get/set_jsondecode – decoding JSON format Y - get/set_cast_hook – fallback typecast function Y - get/set_datestyle – assume a fixed date style Y - get/set_typecast – custom typecasting Y - cast_array/record – fast parsers for arrays and records Y - Type helpers Y - Module constants Y - Connection – The connection object query – execute a SQL command string Y - send_query - executes a SQL command string asynchronously Y - query_prepared – execute a prepared statement Y - prepare – create a prepared statement Y - describe_prepared – describe a prepared statement Y - reset – reset the connection Y - poll - completes an asynchronous connection Y - cancel – abandon processing of current SQL command Y - close – close the database connection Y - transaction – get the current transaction state Y - parameter – get a current server parameter setting Y - date_format – get the currently used date format Y - fileno – get the socket used to connect to the database Y - set_non_blocking - set the non-blocking status of the connection Y - is_non_blocking - report the blocking status of the connection Y - getnotify – get the last notify from the server N 数据库不支持listen/notify。 inserttable – insert a list into a table Y copy命令中如果有\n,请使用双引号引用此字段。 get/set_notice_receiver – custom notice receiver Y - putline – write a line to the server socket [DA] Y - getline – get a line from server socket [DA] Y - endcopy – synchronize client and server [DA] Y - locreate – create a large object in the database [LO] N 大对象相关操作。 getlo – build a large object from given oid [LO] N 大对象相关操作。 loimport – import a file to a large object [LO] N 大对象相关操作。 Object attributes Y - The DB wrapper class Initialization Y - pkey – return the primary key of a table Y - get_databases – get list of databases in the system Y - get_relations – get list of relations in connected database Y - get_tables – get list of tables in connected database Y - get_attnames – get the attribute names of a table Y - has_table_privilege – check table privilege Y - get/set_parameter – get or set run-time parameters Y - begin/commit/rollback/savepoint/release – transaction handling Y - get – get a row from a database table or view Y - insert – insert a row into a database table Y - update – update a row in a database table Y - upsert – insert a row with conflict resolution Y - query – execute a SQL command string Y - query_formatted – execute a formatted SQL command string Y - query_prepared – execute a prepared statement Y - prepare – create a prepared statement Y - describe_prepared – describe a prepared statement Y - delete_prepared – delete a prepared statement Y - clear – clear row values in memory Y - delete – delete a row from a database table Y 元组必须有唯一键或者主键。 truncate – quickly empty database tables Y - get_as_list/dict – read a table as a list or dictionary Y - escape_literal/identifier/string/bytea – escape for SQL Y - unescape_bytea – unescape data retrieved from the database Y - encode/decode_json – encode and decode JSON data Y - use_regtypes – determine use of regular type names Y - notification_handler – create a notification handler N 数据库不支持listen/notify。 Attributes of the DB wrapper class Y - Query methods getresult – get query values as list of tuples Y - dictresult/dictiter – get query values as dictionaries Y - namedresult/namediter – get query values as named tuples Y - scalarresult/scalariter – get query values as scalars Y - one/onedict/onenamed/onescalar – get one result of a query Y - single/singledict/singlenamed/singlescalar – get single result of a query Y - listfields – list fields names of previous query result Y - fieldname, fieldnum – field name/number conversion Y - fieldinfo – detailed info about query result fields Y - ntuples – return number of tuples in query object Y - memsize – return number of bytes allocated by query result Y - LargeObject – Large Objects open – open a large object N 大对象相关操作。 close – close a large object N 大对象相关操作。 read, write, tell, seek, unlink – file-like large object handling N 大对象相关操作。 size – get the large object size N 大对象相关操作。 export – save a large object to a file N 大对象相关操作。 Object attributes N 大对象相关操作。 The Notification Handler Instantiating the notification handler N 数据库不支持listen/notify。 Invoking the notification handler N 数据库不支持listen/notify。 Sending notifications N 数据库不支持listen/notify。 Auxiliary methods N 数据库不支持listen/notify。 pgdb Module functions and constants connect – Open a PostgreSQL connection Y - get/set/reset_typecast – Control the global typecast functions Y - Module constants Y - Errors raised by this module Y - Connection – The connection object close – close the connection Y - commit – commit the connection Y - rollback – roll back the connection Y - cursor – return a new cursor object Y - Attributes that are not part of the standard Y - Cursor – The cursor object description – details regarding the result columns Y - rowcount – number of rows of the result Y - close – close the cursor Y - execute – execute a database operation Y - executemany – execute many similar database operations Y - callproc – Call a stored procedure Y - fetchone – fetch next row of the query result Y - fetchmany – fetch next set of rows of the query result Y - fetchall – fetch all rows of the query result Y - arraysize - the number of rows to fetch at a time Y - Methods and attributes that are not part of the standard Y - Type – Type objects and constructors Type constructors Y - Type objects Y -
  • 连接集群前的准备 GaussDB(DWS)集群已绑定弹性IP。 已获取GaussDB(DWS)集群的数据库管理员用户名和密码。 请注意,由于MD5算法已经被证实存在碰撞可能,已严禁将之用于密码校验算法。当前GaussDB(DWS)采用默认安全设计,默认禁止MD5算法的密码校验,可能导致开源客户端无法正常连接的问题。建议先联系技术支持人员检查数据库参数password_encryption_type参数是否为1,如果取值不为1,需要修改;然后修改一次准备使用的数据库用户的密码。 当前GaussDB(DWS)出于安全考虑,已经默认不再使用MD5存储密码摘要了,这将导致使用开源驱动或者客户端无法正常连接数据库。需要您调整密码策略后再创建一个新用户或者对老用户做一次密码修改,方可使用开源协议中使用的MD5认证算法。 数据库中是不会存储您的密码原文的,而是存储的密码的HASH摘要,在密码校验时与客户端发来的密码摘要进行比对(中间会有加盐操作)。故当您改变了密码算法策略时,数据库也是无法还原您的密码,再生成新的HASH算法的摘要值的。必须您手动修改一次密码或者创建一个新用户,这时新的密码将会采用您设置的HASH算法进行摘要存储,用于下次连接认证。 已获取GaussDB(DWS)集群的公网访问地址,含IP地址和端口。具体请参见获取GaussDB(DWS)集群连接地址。 已安装PyGreSQL第三方库。 下载地址:http://www.pygresql.org/download/index.html。 安装部署操作请参见:http://www.pygresql.org/contents/install.html。 CentOS、Redhat等操作系统中使用yum命令安装,命令为: 1 yum install PyGreSQL PyGreSQL的使用依赖于PostgreSQL的libpq动态库(32位的PyGreSQL对应32位的libpq,64位的PyGreSQL对应64位的libpq),Linux中可以依赖yum命令解决。在Windows系统使用PyGreSQL需要先安装libpq,主要方式有两种: 安装PostgreSQL,并配置libpq、ssl、crypto动态库位置到环境变量PATH中。 安装psqlodbc,使用PostgreSQL ODBC驱动携带的libpq、ssl、crypto动态库。
  • 概述 告警管理包含查看告警规则、告警规则配置与告警信息订阅功能。其中,告警规则可以提供过去一周的告警信息统计与告警信息明细,方便用户自行查看租户下的告警。该特性除了以默认值的形式提供一套GaussDB(DWS)告警最佳实践外,还允许用户根据自己的业务特点,个性化修改告警阈值。告警管理通过 消息通知 服务(Simple Message Notification,简称SMN)发送GaussDB(DWS) 告警通知,用户可订阅告警启用通知。 该特性仅8.1.1.200及以上集群版本支持。 告警管理目前暂不支持按照企业项目划分告警。
  • 经典变更规格对系统的影响 经典变更规格前,需退出创建了临时表的客户端连接,因为在经典变更规格过程中及成功之前创建的临时表将会失效,操作临时表也会失败。但是经典变更规格后创建的临时表不受影响。 经典变更规格过程中,进入数据重分布阶段集群将会变成“只读”状态,变更过程中业务可能长期被阻塞,建议您在工程师的协助下进行,避免业务受影响。 经典变更规格后内网IP会变更,如果业务侧有使用IP地址进行连接,需要更新连接IP地址。 经典变更规格后域名会保持不变,域名内绑定IP地址会发生切换,过程中会出现短暂的连接中断,请注意在变更时间窗内尽量避免业务语句写入。如果业务侧有使用域名进行连接,则需要更新域名相应缓存信息避免变更结束后连接失败。 如果集群有绑定弹性负载均衡(ELB),经典变更规格后业务侧连接地址保持不变,继续使用ELB地址;ELB内部服务器地址会更新为新的连接地址。 为防止数据丢失,在变更完成后、删除老集群前会对老集群做一次全量快照(若不支持快照功能将跳过此步骤),可在快照列表中查看,确认无误后需手动删除快照。 经典变更规格过程中,集群只读会影响智能运维中相关运维任务的功能使用。建议在经典变更规格前,将智能运维任务暂停,或错开智能运维与经典变更规格的时间窗。
  • 监控面板 用户通过定义监控面板来配置相关的监控视图,监控面板与用户绑定,登录后可看到自定义的监控面板。 创建监控面板:用户可单击“创建监控面板”按钮定义自己的监控面板。 修改监控面板:用户可单击“修改”按钮修改监控面板的名称。 删除监控面板:用户可单击“删除”按钮删除监控面板,默认监控面板无法被删除。 共享监控面板:用户可单击“共享”按钮共享监控面板,被共享用户则可以看到该面板,但无法修改。 图1 监控面板
  • 添加监控视图 目前DMS提供集群、数据库、实例、节点和逻辑集群五种维度的监控视图,用户可根据需求单击“添加监控视图”按钮添加。监控指标如下所示: 集群维度的监控指标:CPU使用率、内存使用率、磁盘使用率、磁盘I/O、网络I/O、状态、CN异常数量、只读、会话数量、活跃会话数、死锁数量、DN异常数量、DN实例CPU使用率、平均每秒事务数、平均每秒查询数、容量、模式容量、SQL堆积、查询数量、资源池、事务数量。 数据库维度的监控指标:活跃会话数、会话数量、插入行数、更新行数、删除行数、容量。 实例维度的监控指标:实例内存使用率、动态内存使用率。 节点维度的监控指标:CPU使用率、内存使用率、平均磁盘使用率、TCP协议栈重传率、磁盘I/O、网络I/O、磁盘总量、磁盘使用率、磁盘读速率、磁盘写速率、磁盘I/O等待时间、磁盘I/O服务时间、磁盘I/O使用率、网卡状态、接收包数、发送包数、接收丢包数、接收速率、发送速率、CPU使用情况、内存使用情况。 逻辑集群维度的监控指标:CPU使用率、内存使用率、磁盘I/O、网络I/O、QPS、SQL堆积。 图2 添加监控视图 每个监控面板上最多可以添加20个监控视图,添加过多的视图会导致页面请求数据增多,所需的渲染时间增大,因此请合理的控制监控视图规模。 节点维度中最多可以勾选20个监控对象,该特性仅8.1.3.310及以上集群版本支持。
  • 约束与限制 存算分离集群仅9.1.0及以上集群版本支持数据库转加密功能。 如果该集群存在容灾关系,即使集群在“可用”状态也无法转加密,用户需先解除容灾关系,转加密成功后再重新建立容灾关系。 数据库加密功能一旦开启就无法关闭。 开启数据库加密功能后,用于加密GaussDB(DWS)数据库的KMS密钥在使用过程中不能被禁用、删除或冻结,否则会导致GaussDB(DWS)集群异常或数据库不可用。 开启数据库加密功能后创建的快照不支持使用openAPI做恢复。 默认情况下,只有华为云账号或拥有Security Administrator权限的用户才具备查询委托和创建委托的权限。账号中的IAM用户,默认没有查询委托和创建委托的权限,此时需联系有权限的用户在当前页面完成对GaussDB(DWS)的委托授权。
共100000条