华为云用户手册

  • 计费周期 包年/包月AstroZero资源的计费周期是根据您购买的时长来确定的(以UTC+8时间为准)。一个计费周期的起点是您开通或续费资源的时间(精确到秒),终点则是到期日的23:59:59。 例如,如果您在2023/03/08 15:50:04购买了一个时长为一个月的AstroZero专业版实例,那么其计费周期为:2023/03/08 15:50:04 ~ 2023/04/08 23:59:59。
  • 计费示例 假设您在2023/03/08 15:50:04购买了一个包年/包月的AstroZero实例(用户数:35人,版本:专业版)。购买时长为一个月,并在到期前手动续费1个月,则: 第一个计费周期为:2023/03/08 15:50:04 ~ 2023/04/08 23:59:59 第二个计费周期为:2023/04/08 23:59:59 ~ 2023/05/08 23:59:59 图中价格仅供参考,实际计算请以Astro轻应用价格详情中的价格为准。 图1 包年/包月AstroZero费用计算示例
  • 适用计费项 AstroZero提供了免费版、标准版、专业版和专享版四种套餐,请根据需要选择按月购买或按年购买。 免费版:免费使用,最多可添加10个用户(包括业务用户),可以使用的资源有限,免费版提供开发环境和开发零代码应用的运行环境,不提供低代码应用的运行环境。 标准版:适用于零代码应用开发场景,开发者不需要有代码开发经验,企业自用首选。 专业版:专业版在标准版基础上提供了低代码应用运行环境(多租户共享运行环境),且提供了更多功能和资源,适用于专业开发者。 专享版:使用专享版前,请确认已提交工单申请开通专享版,否则,您将无法购买专享版。专享版提供了物理隔离的运行环境,运行环境实例发放到租户虚拟私有云中。
  • 变更配置后对计费的影响 当前包年/包月的AstroZero套餐的规格不能满足您的业务需要时,可以在控制台发起升级规格操作。AstroZero支持免费版升级标准版或专业版,标准版升级至专业版,变更时系统将按照如下规则为您计算变更费用: 套餐版本升级:新套餐版本价格高于老套餐版本价格,此时您需要支付新老版本的差价。 升级版本费用 = 升级后版本价格 * 剩余周期 - 未升级版本价格 * 剩余周期 剩余周期计算示例: 2023/11/1客户购买了3年的AstroZero,有效期截止到2026/11/1,客户在2024/5/1发生变更,则剩余周期=2024年剩余周期+2025年剩余周期+2026年剩余周期=244/365+1+305/365=2.50(年)。
  • 到期后影响 图2描述了包年/包月AstroZero资源各个阶段的状态。购买后,在计费周期内资源正常运行,此阶段为有效期。资源到期而未续费时,将陆续进入宽限期和保留期,详细说明请参考宽限期保留期。 图2 包年/包月AstroZero资源生命周期 到期预警 包年/包月资源(未设置自动续费、到期转按需、到期不续费)到期前15、7、3、1天,汇总发通知告知客户去续费;包年/包月资源(设置到期不续费)到期前3天,汇总发通知告知客户去续费。 到期后影响 当包年/包月的AstroZero到期未续费时,首先会进入宽限期,可以正常使用该资源。 如果在宽限期内仍未续费或充值,那么就会进入保留期,保留期内该资源会被冻结不能正常使用,但对客户存储在该资源中的数据仍予以保留。 保留期满仍未续费或充值,那么该资源会自动被删除,且不能再找回,也不能再续费。 华为云根据客户等级,定义了不同客户的宽限期和保留期时长。 关于续费的详细介绍,请参见续费概述。
  • 续费相关的功能 包年/包月AstroZero续费相关的功能,如表1所示。 表1 续费相关的功能 功能 说明 手动续费 包年/包月AstroZero从购买到被自动删除前,您可以随时在AstroZero控制台为其续费,以延长AstroZero的使用时间。 自动续费 开通自动续费后,AstroZero会在每次到期前自动续费,避免因忘记手动续费而导致资源被自动删除。 在一台包年/包月AstroZero生命周期的不同阶段,您可以根据需要选择一种方式进行续费,具体如图1所示。 图1 AstroZero生命周期 AstroZero从购买到到期前,处于正常运行阶段,资源状态为“运行中”。 到期后,资源状态变为“已过期”。 到期未续费时,AstroZero首先会进入宽限期,宽限期到期后仍未续费,资源状态变为“已冻结”。 超过宽限期仍未续费将进入保留期,如果保留期内仍未续费,资源将被自动删除。 华为云根据客户等级,定义了不同客户的宽限期和保留期时长。 在AstroZero到期前均可开通自动续费,到期前7日凌晨3:00首次尝试自动续费,如果扣款失败,每天凌晨3:00尝试一次,直至AstroZero到期或者续费成功。到期前7日自动续费扣款是系统默认配置,您也可以根据需要修改此扣款日。
  • 规则介绍 自动续费可以减少手动续费的管理成本,避免因忘记手动续费而导致AstroZero无法使用。自动续费的规则如下所述: 以AstroZero的到期日计算第一次自动续费日期和计费周期。 AstroZero自动续费周期,以您选择的套餐版本时长为准。 AstroZero到期前均可开通自动续费,到期前7日凌晨3:00首次尝试自动续费,如果扣款失败,每天凌晨3:00尝试一次,直至AstroZero到期或者续费成功。 开通自动续费后,还可以手动续费AstroZero。手动续费后,自动续费仍然有效,在新的到期时间前的第7天开始扣款。 自动续费的到期前7日自动扣款属于系统默认配置,您也可以根据需要修改此扣款日,如到期前6日、到期前5日等。 更多关于自动续费的规则介绍,请参见自动续费规则说明。
  • 计费示例 假设您在2023/03/08 15:50:04购买了一个包年/包月的AstroZero实例(用户数为35人,实例版本为专业版)。购买时长为1个月,并在到期前手动续费1个月,则: 第一个计费周期为:2023/03/08 15:50:04 ~ 2023/04/08 23:59:59 第二个计费周期为:2023/04/08 23:59:59 ~ 2023/05/08 23:59:59 图1中价格仅供参考,实际计算请以Astro轻应用价格详情中的价格为准。 图1 包年/包月AstroZero费用计算示例
  • 计费说明 AstroZero根据您选择的实例版本、用户数和购买时长进行计费。AstroZero提供了四种不同的规格套餐供您选择。除了免费版实例外,其他三种规格套餐均为包年/包月购买方式。如您需要快速了解AstroZero服务的具体价格,请参见AstroZero价格详情。 表1标“*”的计费项为必选计费项。 表1 AstroZero计费项 计费项 计费项说明 适用的计费模式 计费公式 * 实例版本 AstroZero服务提供了标准版、专业版和专享版三种包年/包月的实例版本,请根据自身需求,购买相应的实例版本。 标准版:适用于零代码应用开发场景,开发者不需要有代码开发经验,企业自用首选。 专业版:专业版在标准版基础上提供了低代码应用运行环境(多租户共享运行环境),且提供了更多功能和资源,适用于专业开发者。 专享版:专享版提供了物理隔离的运行环境,运行环境实例发放到租户虚拟私有云中。使用专享版前,请确认已提交工单申请开通专享版,否则,您将无法购买专享版。 包年/包月 标准版270元/月,最多可添加30个用户(包括业务用户),超过的用户数将额外收取费用(9元/用户/月),即(¥270.00/月/基础30人 + ¥9.00/月/新增1人)*订购月份数 专业版1170元/月,最多可添加30个用户(包括业务用户),超过的用户数将额外收取费用(39元/用户/月),即(¥1170.00/月/基础30人 + ¥39.00/月/新增1人)*订购月份数 专享版提供了如下三种规格,供您选择。 500人:48000元/月,最多可添加500用户(包括业务用户)。 2000人:82000元/月,最多可添加2000用户(包括业务用户)。 5000人:128000元/月,最多可添加5000用户(包括业务用户)。 其中,1年按10个月计算。 * 用户数 购买用户的个数,即用户(应用开发者)和业务用户(应用使用者)之和。
  • 入门实践 当您完成创建项目、代码仓库等准备工作后,可以根据业务需求使用流水线提供的一系列常用实践。 表1 常用最佳实践 实践 描述 通过微服务变更流水线修复项目BUG并快速发布 CodeArts Pipeline为企业提供了一种微服务模型,将企业大军团的作战方式转变为小团队精英作战方式,支持每个微服务独立进行开发、验证、部署及上线发布,缩短需求发布周期。同时支持企业按照业务功能组织团队,优化管理模型,使运作更精细化,有效提升团队运作效率。 该解决方案介绍如何通过微服务变更流水线模拟修复项目下的一个BUG并快速发布。 基于Kubernetes原生Service的场景完成微服务蓝绿发布 灰度发布是在生产环境中创建与当前线上服务完全一致的工作负载(灰度负载),仅对其中的包版本(业务代码和配置)进行更新,但是新创建的工作负载不承接任何现网流量,对线上用户没有任何影响,就可以在没有风险的情况下,在生产环境进行测试了。在灰度环境验证无问题之后,就可以逐渐将线上用户的真实访问引流到灰度负载,直至完全引流后,新创建的灰度负载承接所有现网流量,原先的线上负载不承接任何流量,此时就可以安全地删除旧负载,保留新负载,完成一次发布。 该解决方案介绍在不需要占用集群额外资源安装插件的情况下,基于Kubernetes原生Service的场景完成微服务蓝绿发布。 配置准出条件并对代码检查结果进行校验 CodeArts Pipeline提供统一的准出条件管理能力,通过配置规则和策略,实现阶段准出校验,并最终控制流水线的执行。用户根据实际需要将策略资源应用到流水线作为准出条件,帮助高效管理项目,保障产品高质量交付。 该解决方案基于流水线准出条件-Check代码检查规则策略,通过添加代码检查任务所在阶段的准出条件,对代码检查任务的检查结果进行自动化校验,只有检查结果满足准出条件,才可以进入下一个阶段。
  • 威胁检测服务如何收费? 根据您选择的服务规格、使用时长和超出服务规格的检测量进行收费。 威胁检测服务提供包年/包月的计费方式,包年/包月支持入门包、初级包、基础包、高级包4种服务规格,您可以根据业务需求进行选购。同时,威胁检测服务还提供检测叠加包,当检测的日志数据源容量超过您所购买的服务规格后,威胁检测服务会自动为您购买检测叠加包,额外按需计费。 如果您所购买的服务规格(入门包、初级包、基础包、高级包)到期,且未进行续购,MTD将根据您的使用情况按需计费。 有关MTD详细的计费说明,请参见计费说明。 父主题: 购买咨询
  • 如何选择区域? 选择区域时,您需要考虑以下几个因素: 地理位置 一般情况下,建议就近选择靠近您或者您的目标用户的区域,这样可以减少网络时延,提高访问速度。 在除中国大陆以外的亚太地区有业务的用户,可以选择“中国-香港”、“亚太-曼谷”或“亚太-新加坡”区域。 在非洲地区有业务的用户,可以选择“非洲-约翰内斯堡”区域。 在拉丁美洲地区有业务的用户,可以选择“拉美-圣地亚哥”区域。 资源的价格 不同区域的资源价格可能有差异,请参见华为云服务价格详情。
  • 什么是区域、可用区? 我们用区域和可用区来描述数据中心的位置,您可以在特定的区域、可用区创建资源。 区域(Region):从地理位置和网络时延维度划分,同一个Region内共享弹性计算、块存储、对象存储、VPC网络、弹性公网IP、镜像等公共服务。Region分为通用Region和专属Region,通用Region指面向公共租户提供通用云服务的Region;专属Region指只承载同一类业务或只面向特定租户提供业务服务的专用Region。 可用区(AZ,Availability Zone):一个AZ是一个或多个物理数据中心的集合,有独立的风火水电,AZ内逻辑上再将计算、网络、存储等资源划分成多个集群。一个Region中的多个AZ间通过高速光纤相连,以满足用户跨AZ构建高可用性系统的需求。 图1阐明了区域和可用区之间的关系。 图1 区域和可用区 目前,华为云已在全球多个地域开放云服务,您可以根据需求选择适合自己的区域和可用区。
  • 威胁检测 服务可以检测哪些风险? 威胁检测服务接入全量的 统一身份认证 IAM )、虚拟私有云(VPC)、云解析服务(DNS)、 云审计 服务( CTS )、 对象存储服务 (OBS)的日志数据,利用AI智能引擎、威胁情报、规则基线模型一站式检测,持续监控暴力破解、恶意攻击、渗透、挖矿攻击等恶意活动和未经授权行为,识别云服务日志中的潜在威胁,对检测出的威胁告警信息进行统计展示。 威胁检测服务通过弹性画像模型、无监督模型、有监督模型实现对风险口令、凭证泄露、Token利用、异常委托、异地登录、未知威胁、暴力破解七大高危场景实现了异常行为的智能检测。可有效对化整为零低频次的分布式暴破攻击行为进行成功捕获。同时可对Linux.Ngioweb僵尸网络、SystemdMiner挖矿木马、WatchBog挖矿木马、BadRabbit勒索病毒进行有效检测、捕获。 父主题: 产品咨询
  • 创建镜像仓库 用平台管理员账号登录Octopus平台。 在左侧菜单栏中,单击“镜像仓库 ”。 单击“新建”,填写基本信息。 图1 创建镜像仓库 名称:输入镜像仓库的名称,只能包含数字、英文、中文、下划线、中划线。 用途:根据需求,下拉框选择用途。 描述:简单描述镜像仓库,最大长度为255。 使用范围:仅支持团队,即租户内所有配置了该镜像相关权限的用户都可见可编辑。 单击“确定”,在镜像仓库列表即可查看新建的镜像仓库。
  • 使用流程 Octopus平台提供了从“数据准备 → 标注数据 → 训练模型 → 仿真任务”的全流程开发,针对每个环节,其使用是相对独立自由的。本章节梳理了Octopus使用流程详解,此文档介绍其中一种方式完成自动驾驶开发。 图1 Octopus的使用流程 表1 使用流程说明 流程 子任务 说明 详细指导 数据准备 创建算子 基于您的业务数据,您可以在Octopus中创建数据处理的算子。 创建算子 数据批导 向Octopus平台导入原始数据包。 批导数据 数据处理 数据导入后,根据不同用途,选择不同算子,对数据包进行数据处理。 处理数据 标注数据 设置团队 Octopus标注服务提供团队管理,为不同团队分配不同项目。未分配到标注项目的团队不能查看该标注项目信息,保证标注任务的私密性及安全性。 创建团队 创建项目 项目内包含多个标注任务,在创建项目时需绑定标注团队,指定团队完成项目内的标注任务。 创建项目 标注任务 根据不同角色分配不同标注任务。 标注流程 训练模型 训练算法 创建训练作业前需要先选择算法,可以使用Octopus内置的算法,也可以自定义算法。 训练算法 模型评测 在机器学习中,通常需要使用一定的方法和标准,来评测一个模型的预测精确度,用于衡量一个模型及其标注结果的可信度。自动驾驶领域的模型多用于目标检测,如识别并标注出图像中车辆、行人、可行区域等对象。 模型评测 编译镜像 编译镜像可以将训练模型转换为特定芯片支持的可识别的文件,编译镜像模块支持对编译镜像的增加、查询、删除以及编辑。 编译镜像 编译任务 训练产生的模型版本,不可直接被车载芯片识别,需要经过编译工具,将训练产生的模型编译成车载芯片识别的模型。 编译任务 仿真任务 评测镜像 Octopus平台各服务均提供用户 自定义镜像 功能,此模块对镜像提供了统一管理。 仿真镜像 仿真场景 仿真场景模块支持对单个仿真场景的增删改查操作。用户可根据场景类型,依据平台提示,上传符合要求的场景文件。场景创建完毕后,用户可选择在线仿真机器加载场景,通过仿真器内置算法检验场景质量。 仿真场景 仿真任务 仿真任务列表提供对仿真任务的管理功能,支持停止任务、删除任务、修改任务等操作。 仿真任务 父主题: 自动驾驶云服务全流程开发
  • 创建镜像仓库 用平台管理员账号登录Octopus平台。 在左侧菜单栏中,单击“镜像仓库 ”。 单击“新建”,填写基本信息。 图1 创建镜像仓库 名称:输入镜像仓库的名称,只能包含数字、英文、中文、下划线、中划线。 用途:根据需求,下拉框选择用途。 描述:简单描述镜像仓库,最大长度为255。 使用范围:仅支持团队,即租户内所有配置了该镜像相关权限的用户都可见可编辑。 单击“确定”,在镜像仓库列表即可查看新建的镜像仓库。
  • 操作流程 Octopus仿真服务的流程如图1所示。 图1 Octopus仿真服务全流程 表1 使用流程说明 流程 子任务 说明 详细指导 镜像仓库 镜像仓库 平台为用户提供了自定义镜像功能,为了方便用户对镜像进行统一管理,平台设置了镜像仓库管理。 创建镜像仓库 仿真服务 算法管理 在创建任务前,需要创建算法,用户可从本地上传容器镜像。 创建仿真算法 评测管理 支持内置评测配置和自定义评测镜像,对仿真任务中的算法展开评测。 创建评测 场景管理 创建仿真场景,仿真场景库、测试套件、测试用例和逻辑泛化场景用于仿真开发。 创建仿真场景 任务管理 选择仿真算法和仿真场景创建仿真任务,从行车安全、驾驶行为、乘员舒适性等角度衡量仿真算法控制效果,支持可视化仿真结果,生成任务报告。 创建仿真任务
  • 编辑评测指标 评测类型为内置评测配置时,可为评测添加或删除评测指标,便于管理。 单击评测名称,在评测项目详情页,自定义评测配置部分,单击“编辑”。 单击“添加评测指标”,选择需要添加的指标,单击“确认”。 图2 添加评测指标 单击,对阈值进行设置,也可对重要度以及评分方案进行选择。 图3 阈值设置 重要度:可选主要和次要。 评分方案:可选主要次要log函数、主要次要均匀权重、全部均匀权重。具体介绍请查看评测分数计算介绍。 删除评测指标。 单击评测指标后“操作”栏内“删除”,删除该评测指标。 被任务使用的评测项目和镜像不能删除。 以上信息选择无误后,单击“保存”,评测指标编辑完成。
  • 环境变量 表5 与gsql相关的环境变量 名称 描述 COLUMNS 如果\set columns为0,则由此参数控制wrapped格式的宽度。这个宽度用于决定在自动扩展的模式下,是否要把宽输出模式变成竖线的格式。 PAGER 如果查询结果无法在一页显示,它们就会被重定向到这个命令。可以用\pset命令关闭分页器。典型的是用命令more或less来实现逐页查看。缺省值是平台相关的。 说明: less的文本显示,受系统环境变量LC_CTYPE影响。 PSQL_EDITOR \e和\ef命令使用环境变量指定的编辑器。变量是按照列出的先后顺序检查的。在Unix系统上默认的编辑工具是vi。 EDITOR VISUAL PSQL_EDITOR_LINENUMBER_ARG 当\e和\ef带上一行数字参数使用时,这个变量指定的命令行参数用于向编辑器传递起始行数。像Emacs或vi这样的编辑器,这只是个加号。如果选项和行号之间需要空白,在变量的值后加一个空格。例如: PSQL_EDITOR_LINENUMBER_ARG = '+' PSQL_EDITOR_LINENUMBER_ARG='--line ' Unix系统默认的是+。 PSQLRC 用户的.gsqlrc文件的交互位置。 SHELL 使用\!命令跟shell执行的命令是一样的效果。 TMPDIR 存储临时文件的目录。缺省是/tmp。
  • 操作步骤 使用gsql连接到 GaussDB 服务器。 gsql工具使用-d参数指定目标数据库名、-U参数指定数据库用户名、-h参数指定主机名、-p参数指定端口号信息。 若未指定数据库名称,则使用初始化时默认生成的数据库名称;若未指定数据库用户名,则默认使用当前操作系统用户作为数据库用户名;当某个值没有前面的参数(-d、-U等)时,若连接的命令中没有指定数据库名(-d)则该参数会被解释成数据库名;如果已经指定数据库名(-d)而没有指定数据库用户名(-U)时,该参数则会被解释成数据库用户名。 示例1,使用omm用户连接到本机gaussdb数据库的8000端口。 gsql -d gaussdb -p 8000 示例2,使用jack用户连接到远程主机gaussdb数据库的8000端口。 gsql -h 10.180.123.163 -d gaussdb -U jack -p 8000 集中式数据库实例中,连接主DataNode时可以把DataNode的IP地址使用逗号分隔全部添加到-h后,gsql将依次从前往后连接每个IP地址,查询当前DataNode是否为主DataNode,如果不是则断开连接尝试下一个IP地址,直到找到主DataNode为止。 gsql -h 10.180.123.163,10.180.123.164,10.180.123.165 -d gaussdb -U jack -p 8000 示例3,参数gaussdb和omm不属于任何选项时,分别被解释成了数据库名和用户名。 gsql gaussdb omm -p 8000 等效于 gsql -d gaussdb -U omm -p 8000 详细的gsql参数请参见命令参考。 执行SQL语句。 以创建数据库human_staff为例。 12 CREATE DATABASE human_staff;CREATE DATABASE 通常,输入的命令行在遇到分号的时候结束。如果输入的命令行没有错误,结果就会输出到屏幕上。 执行gsql元命令。 以列出GaussDB中所有的数据库和描述信息为例。 1 2 3 4 5 6 7 8 9101112 gaussdb=# \l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges ----------------+----------+-----------+---------+-------+----------------------- human_resource | omm | SQL_ASCII | C | C | postgres | omm | SQL_ASCII | C | C | template0 | omm | SQL_ASCII | C | C | =c/omm + | | | | | omm=CTc/omm template1 | omm | SQL_ASCII | C | C | =c/omm + | | | | | omm=CTc/omm human_staff | omm | SQL_ASCII | C | C | (5 rows) 更多gsql元命令请参见元命令参考。
  • 示例 以把一个查询分成多行输入为例。注意提示符的变化: 12345 gaussdb=# CREATE TABLE HR.areaS(gaussdb(# area_ID NUMBER,gaussdb(# area_NAME VARCHAR2(25)gaussdb-# )tablespace EXAMPLE;CREATE TABLE 查看表的定义: 123456 gaussdb=# \d HR.areaS Table "hr.areas" Column | Type | Modifiers -----------+-----------------------+----------- area_id | numeric | not null area_name | character varying(25) | 向HR.areaS表插入四行数据: 12345678 gaussdb=# INSERT INTO HR.areaS (area_ID, area_NAME) VALUES (1, 'Europe');INSERT 0 1gaussdb=# INSERT INTO HR.areaS (area_ID, area_NAME) VALUES (2, 'Americas');INSERT 0 1gaussdb=# INSERT INTO HR.areaS (area_ID, area_NAME) VALUES (3, 'Asia');INSERT 0 1gaussdb=# INSERT INTO HR.areaS (area_ID, area_NAME) VALUES (4, 'Middle East and Africa');INSERT 0 1 切换提示符: 12 gaussdb=# \set PROMPT1 '%n@%m %~%R%#'omm@[local] gaussdb=# 查看表: 12345678 omm@[local] gaussdb=# SELECT * FROM HR.areaS; area_id | area_name ---------+------------------------ 1 | Europe 4 | Middle East and Africa 2 | Americas 3 | Asia(4 rows) 可以用\pset命令以不同的方法显示表: 1 2 3 4 5 6 7 8 9101112 omm@[local] gaussdb=# \pset border 2Border style is 2.omm@[local] gaussdb=# SELECT * FROM HR.areaS;+---------+------------------------+| area_id | area_name |+---------+------------------------+| 1 | Europe || 2 | Americas || 3 | Asia || 4 | Middle East and Africa |+---------+------------------------+(4 rows) 1 2 3 4 5 6 7 8 910 omm@[local] gaussdb=# \pset border 0Border style is 0.omm@[local] gaussdb=# SELECT * FROM HR.areaS;area_id area_name ------- ---------------------- 1 Europe 2 Americas 3 Asia 4 Middle East and Africa(4 rows) 使用元命令: 1 2 3 4 5 6 7 8 91011121314151617 omm@[local] gaussdb=# \a \t \xOutput format is unaligned.Showing only tuples.Expanded display is on.omm@[local] gaussdb=# SELECT * FROM HR.areaS;area_id|2area_name|Americasarea_id|1area_name|Europearea_id|4area_name|Middle East and Africaarea_id|3area_name|Asiaomm@[local] gaussdb=#
  • 任务示例 使用如下命令连接数据库。 gsql -d gaussdb -p 8000 gaussdb为需要连接的数据库名称,8000为CN的端口号。 连接成功后,系统显示类似如下信息: gsql ((GaussDB Kernel 503.1.XXX build f521c606) compiled at 2021-09-16 14:55:22 commit 2935 last mr 6385 release)Non-SSL connection (SSL connection is recommended when requiring high-security)Type "help" for help. 查看gsql的帮助信息。具体执行命令请参见表1。 表1 使用gsql联机帮助 描述 示例 查看版权信息 \copyright 查看GaussDB支持的SQL语句的帮助 查看GaussDB支持的SQL语句的帮助 例如,查看GaussDB支持的所有SQL语句: 123456 gaussdb=# \hAvailable help: ABORT ALTER AGGREGATE ... ... 例如,查看CREATE DATABASE命令的参数可使用下面的命令: 1 2 3 4 5 6 7 8 910111213 gaussdb=# \help CREATE DATABASECommand: CREATE DATABASEDescription: create a new databaseSyntax:CREATE DATABASE database_name [ [ WITH ] {[ OWNER [=] user_name ]| [ TEMPLATE [=] template ]| [ ENCODING [=] encoding ]| [ LC_COLLATE [=] lc_collate ]| [ LC_CTYPE [=] lc_ctype ]| [ DBCOMPATIBILITY [=] compatibility_type ]| [ TABLESPACE [=] tablespace_name ]| [ CONNECTION LIMIT [=] connlimit ]}[...] ]; 查看gsql命令的帮助 例如,查看gsql支持的命令: 1234567 gaussdb=# \?General \copyright show GaussDB Kernel usage and distribution terms \g [FILE] or ; execute query (and send results to file or |pipe) \h(\help) [NAME] help on syntax of SQL commands, * for all commands \q quit gsql... ...
  • 其他故障 出现因“总线错误”(Bus error)导致的core dump或异常退出。 一般情况下出现此种问题,是进程运行过程中加载的共享动态库(在Linux为.so文件)出现变化;或者进程二进制文件本身出现变化,导致操作系统加载机器的执行码或者加载依赖库的入口发生变化,操作系统出于保护目的将进程杀死,产生core dump文件。 解决此问题,重试便可。同时请尽可能避免在升级等运维操作过程中,在数据库内部运行业务程序,避免升级时因替换文件产生此问题。 此故障的core dump文件的可能堆栈是dl_main及其子调用,它是操作系统用来初始化进程做共享动态库加载的。如果进程已经初始化,但是共享动态库还未加载完成,严格意义上来说,进程并未完全启动。
  • 创建连接故障 gsql: could not connect to server: No route to host 此问题一般是指定了不可达的地址或者端口导致的。请检查-h参数与-p参数是否添加正确。 gsql: FATAL: Invalid username/password,login denied. 此问题一般是输入了错误的用户名和密码导致的,请联系数据库管理员,确认用户名和密码的正确性。 gsql: FATAL: Forbid remote connection with trust method! 数据库由于安全问题,禁止远程登录时使用trust模式。这时需要修改pg_hba.conf里的连接认证信息。 请联系管理员处理 。 请不要修改pg_hba.conf中数据库主机的相关设置,否则可能导致数据库功能故障。建议业务应用部署在数据库之外,而非数据库内部。 在DN连接数据库,添加“-h 127.0.0.1”可以连接,去掉后无法连接问题。 通过执行SQL语句“show unix_socket_directory”检查DN使用的Unix套接字目录,是否与shell中的环境变量$PGHOST一致。 如果检查结果不一致,那么修改PGHOST环境变量到GUC参数unix_socket_directory指向的目录便可。 关于unix_socket_directory的更多信息,请联系管理员获取。 The "libpq.so" loaded mismatch the version of gsql, please check it. 此问题是由于环境中使用的libpq.so的版本与gsql的版本不匹配导致的,请通过“ldd gsql”命令确认当前加载的libpq.so的版本,并通过修改LD_LIBRARY_PATH环境变量来加载正确的libpq.so。 请参照下面示例,修改LD_LIBRARY_PATH环境变量。其中${path_to_correct_libpq_dir}表示实际环境中正确libpq.so所在目录: export LD_LIBRARY_PATH=${path_to_correct_libpq_dir}:$LD_LIBRARY_PATH gsql: symbol lookup error: xxx/gsql: undefined symbol: libpqVersionString 此问题是由于环境中使用的libpq.so的版本与gsql的版本不匹配导致的(也有可能是环境中存在PostgreSQL的libpq.so),请通过“ldd gsql”命令确认当前加载的libpq.so的版本,并通过修改LD_LIBRARY_PATH环境变量来加载正确的libpq.so。 gsql: connect to server failed: Connection timed out Is the server running on host "xx.xxx.xxx.xxx" and accepting TCP/IP connections on port xxxx? 此问题是由于网络连接故障造成。请检查客户端与数据库服务器间的网络连接。如果发现从客户端无法PING到数据库服务器端,则说明网络连接出现故障。请联系网络管理人员排查解决。 ping -c 4 10.10.10.1PING 10.10.10.1 (10.10.10.1) 56(84) bytes of data.From 10.10.10.1: icmp_seq=2 Destination Host UnreachableFrom 10.10.10.1 icmp_seq=2 Destination Host UnreachableFrom 10.10.10.1 icmp_seq=3 Destination Host UnreachableFrom 10.10.10.1 icmp_seq=4 Destination Host Unreachable--- 10.10.10.1 ping statistics ---4 packets transmitted, 0 received, +4 errors, 100% packet loss, time 2999ms gsql: FATAL: permission denied for database "gaussdb" DETAIL: User does not have CONNECT privilege. 此问题是由于用户不具备访问该数据库的权限,可以使用如下方法解决。 使用管理员用户dbadmin连接数据库。 gsql -d gaussdb -U dbadmin -p 8000 赋予该用户访问数据库的权限。 GRANT CONNECT ON DATABASE gaussdb TO user1; 实际上,常见的许多错误操作也可能产生用户无法连接上数据库的现象。如用户连接的数据库不存在,用户名或密码输入错误等。这些错误操作在客户端工具也有相应的提示信息。 gsql -d gaussdb -p 8000gsql: FATAL: database "gaussdb" does not existgsql -d gaussdb -U user1 -p 8000Password for user user1:gsql: FATAL: Invalid username/password,login denied. gsql: FATAL: sorry, too many clients already,active/non-active: 197/3. 此问题是由于系统连接数量超过了最大连接数量。请联系数据库DBA进行会话连接数管理,释放无用会话。 关于查看用户会话连接数的方法如表1。 会话状态可以在视图PG_STAT_ACTIVITY中查看。无用会话可以使用函数pg_terminate_backend进行释放。 select datid,pid,state from pg_stat_activity; datid | pid | state -------+-----------------+-------- 13205 | 139834762094352 | active 13205 | 139834759993104 | idle(2 rows) 其中pid的值即为该会话的线程ID。根据线程ID结束会话。 SELECT PG_TERMINATE_BACKEND(139834759993104); 显示类似如下信息,表示结束会话成功。 PG_TERMINATE_BACKEND---------------------- t(1 row) 表1 查看会话连接数 描述 命令 查看指定用户的会话连接数上限。 执行如下命令查看连接到指定用户USER1的会话连接数上限。其中-1表示没有对用户user1设置连接数的限制。 SELECT ROLNAME,ROLCONNLIMIT FROM PG_ROLES WHERE ROLNAME='user1'; rolname | rolconnlimit---------+-------------- user1 | -1(1 row) 查看指定用户已使用的会话连接数。 执行如下命令查看指定用户USER1已使用的会话连接数。其中,1表示USER1已使用的会话连接数。 SELECT COUNT(*) FROM dv_sessions WHERE USERNAME='user1'; count------- 1(1 row) 查看指定数据库的会话连接数上限。 执行如下命令查看连接到指定数据库gaussdb的会话连接数上限。其中-1表示没有对数据库gaussdb设置连接数的限制。 SELECT DATNAME,DATCONNLIMIT FROM PG_DATABASE WHERE DATNAME='gaussdb'; datname | datconnlimit----------+-------------- gaussdb | -1(1 row) 查看指定数据库已使用的会话连接数。 执行如下命令查看指定数据库gaussdb上已使用的会话连接数。其中,1表示数据库gaussdb上已使用的会话连接数。 SELECT COUNT(*) FROM PG_STAT_ACTIVITY WHERE DATNAME='gaussdb'; count ------- 1(1 row) 查看所有用户已使用会话连接数。 执行如下命令查看所有用户已使用的会话连接数。 SELECT COUNT(*) FROM dv_sessions; count------- 10(1 row) gsql: wait xxx.xxx.xxx.xxx:xxxx timeout expired gsql在向数据库发起连接的时候,会有5分钟超时机制,如果在这个超时时间内,数据库未能正常的对客户端请求进行校验和身份认证,那么gsql会退出当前会话的连接过程,并报出如上错误。 一般来说,此问题是由于连接时使用的-h参数及-p参数指定的连接主机及端口有误(即错误信息中的xxx部分),导致通信故障;极少数情况是网络故障导致。要排除此问题,请检查数据库的主机名及端口是否正确。 gsql: could not receive data from server: Connection reset by peer. 同时,检查DN日志中出现类似如下日志“ FATAL: cipher file "/data/coordinator/server.key.cipher" has group or world access”,一般是由于数据目录或部分关键文件的权限被误操作篡改导致。请参照其他正常实例下的相关文件权限,修改回来便可。 gsql: FATAL: GSS authentication method is not allowed because XXXX user password is not disabled. 目标DN的pg_hba.conf里配置了当前客户端IP使用"gss"方式来做认证,该认证算法不支持用作客户端的身份认证,请修改到"sha256"后再试。具体操作请联系管理员处理。 请不要修改pg_hba.conf中数据库主机的相关设置,否则可能导致数据库功能故障。 建议业务应用部署在数据库之外,而非数据库内部。
  • 命令参考 详细的gsql参数请参见表1、表2、表3和表4。 表1 常用参数 参数 参数说明 取值范围 -c, --command=COMMAND 声明gsql要执行一条字符串命令然后退出。 - -d, --dbname=DBNAME 指定想要连接的数据库名称。 另外,gsql允许使用扩展的DBNAME,即'postgres[ql]://[user[:password]@][netloc][:port][,...][/dbname][?param1=value1&...]'或'[key=value] [...]'形式的连接串作为DBNAME,gsql将从连接串中解析连接信息,并优先使用这些信息。 注意: gsql使用扩展的DBNAME创建连接时,不支持指定replication参数。 字符串。 -f, --file=FILENAME 使用文件作为命令源而不是交互式输入。gsql将在处理完文件后结束。如果FILENAME是-(连字符),则从标准输入读取。 绝对路径或相对路径,且满足操作系统路径命名规则。 -l, --list 列出所有可用的数据库,然后退出。 - -v, --set, --variable=NAME=VALUE 设置gsql变量NAME为VALUE。 变量的示例和详细说明请参见变量。 - -X, --no-gsqlrc 不读取启动文件(系统范围的gsqlrc或者用户的~/.gsqlrc都不读取)。 说明: 启动文件默认为~/.gsqlrc,或通过PSQLRC环境变量指定。 - -1 ("one"), --single-transaction 当gsql使用-f选项执行脚本时,会在脚本的开头和结尾分别加上START TRANSACTION/COMMIT用以把整个脚本当作一个事务执行。这将保证该脚本完全执行成功,或者脚本无效。 说明: 如果脚本中已经使用了START TRANSACTION,COMMIT,ROLLBACK,则该选项无效。 - -?, --help 显示关于gsql命令行参数的帮助信息然后退出。 - -V, --version 打印gsql版本信息然后退出。 - 表2 输入和输出参数 参数 参数说明 取值范围 -a, --echo-all 在读取行时向标准输出打印所有内容。 注意: 使用此参数可能会暴露部分SQL语句中的敏感信息,如创建用户语句中的password信息等,请谨慎使用。 - -e, --echo-queries 把所有发送给服务器的查询同时回显到标准输出。 注意: 使用此参数可能会暴露部分SQL语句中的敏感信息,如创建用户语句中的password信息等,请谨慎使用。 - -E, --echo-hidden 回显由\d和其他反斜杠命令生成的实际查询。 - -k, --with-key=KEY 使用gsql对导入的加密文件进行解密。 须知: 对于本身就是shell命令中的关键字符如单引号(')或双引号("),Linux shell会检测输入的单引号(')或双引号(")是否匹配。如果不匹配,shell认为用户没有输入完毕,会一直等待用户输入,从而不会进入到gsql程序。 不支持解密导入存储过程和函数。 - -L, --log-file=FILENAME 除了正常的输出源之外,把所有查询输出记录到文件FILENAME中。 注意: 使用此参数可能会暴露部分SQL语句中的敏感信息,如创建用户语句中的password信息等,请谨慎使用。 此参数只保留查询结果到相应文件中,主要目标是为了查询结果能够更好更准确地被其他调用者(例如自动化运维脚本)解析;而不是保留gsql运行过程中的相关日志信息。 绝对路径或相对路径,且满足操作系统路径命名规则。 -m, --maintenance 允许在两阶段事务恢复期间连接数据库。 说明: 该选项是一个开发选项,禁止用户使用,只限专业技术人员使用,功能是:使用该选项时,gsql可以连接到备机,用于校验主备机数据的一致性。 - -n, --no-libedit 关闭命令行编辑。 - -o, --output=FILENAME 将所有查询输出重定向到文件FILENAME。 绝对路径或相对路径,且满足操作系统路径命名规则。 -q, --quiet 安静模式,执行时不会打印出额外信息。 缺省时gsql将打印许多其他输出信息。 -s, --single-step 单步模式运行。意味着每个查询在发往服务器之前都要提示用户,用这个选项也可以取消执行。此选项主要用于调试脚本。 注意: 使用此参数可能会暴露部分SQL语句中的敏感信息,如创建用户语句中的password信息等,请谨慎使用。 - -S, --single-line 单行运行模式,这时每个命令都将由换行符结束,像分号那样。 - -C,-C1, --enable-client-encryption=1 当使用-C参数连接本地数据库或者连接远程数据库时,可通过该选项打开密态数据库开关,此开关为密态等值查询基本能力开关。 - 表3 输出格式参数 参数 参数说明 取值范围 -A, --no-align 切换为非对齐输出模式。 缺省为对齐输出模式。 -F, --field-separator=STRING 设置域分隔符(默认为“|”)。 - -H, --html 打开HTML格式输出。 - -P, --pset=VAR[=ARG] 在命令行上以\pset的风格设置打印选项。 说明: 这里必须用等号而不是空格分隔名称和值。例如,把输出格式设置为LaTeX,可以键入-P format=latex - -R, --record-separator=STRING 设置记录分隔符。 - -r 开启在客户端操作中可以进行编辑的模式。 缺省为关闭。 -t, --tuples-only 只打印行。 - -T, --table-attr=TEXT 允许声明放在HTML table标签里的选项。 使用时请搭配参数“-H,--html”,指定为HTML格式输出。 - -x, --expanded 打开扩展表格式模式。 - -z, --field-separator-zero 设置非对齐输出模式的域分隔符为空。 使用时请搭配参数“-A, --no-align”,指定为非对齐输出模式。 - -0, --record-separator-zero 设置非对齐输出模式的记录分隔符为空。 使用时请搭配参数“-A, --no-align”,指定为非对齐输出模式。 - -2, --pipeline 使用管道传输密码,禁止在终端使用,必须和-c或者-f参数一起使用。 - -g, 打印来自文件的所有SQL。 - 表4 连接参数 参数 参数说明 取值范围 -h, --host=HOSTNAME 指定正在运行服务器的主机名、Unix域套接字的路径、或者 域名 。接受以“,”分割的字符串来指定多个主机地址,支持指定多个主机地址。 当指定多个主机地址时,默认情况下会自动选择主节点地址进行连接。可通过设置PGTARGETSESSIONATTRS环境变量的值来选择连接到不同类型的节点,变量与节点类型对应的关系如下: PGTARGETSESSIONATTRS环境变量的值--选择连接的节点类型 read-write--可读写的节点 read-only--只读节点 primary或者不设定--主节点 standby--备节点 prefer-standby--首选备节点,没有备节点则转为any any--不进行角色检查 说明: 当-h只指定一个域名,但是该域名对应多个IP时,无法触发自动选主功能。 如果省略主机名,gsql将通过Unix域套接字与本地主机的服务器相连,或者在没有Unix域套接字的机器上,通过TCP/IP与localhost连接。 -p, --port=PORT 指定数据库服务器的端口号。可以配置一个或多个,当配置一个时,所有的主机地址都使用同一个端口连接;当配置多个时,顺序与主机地址顺序相同,个数必须与主机地址数相等,当不相等时会报错。 可以通过port参数修改默认端口号。 默认端口可通过编译参数来指定,不指定的话默认为5432。 -U, --username=USERNAME 指定连接数据库的用户。 说明: 通过该参数指定用户连接数据库时,需要同时提供用户密码用以身份验证。您可以通过交换方式输入密码,或者通过-W参数指定密码。 用户名中包含有字符$,需要在字符$前增加转义字符才可成功连接数据库。 字符串,默认使用与当前操作系统用户同名的用户。 -W, --password=PASSWORD 当使用-U参数连接本地数据库或者连接远端数据库时,可通过该选项指定密码。 说明: 登录数据库主节点所在服务器后连接本地数据库主节点实例时,默认使用trust连接,会忽略此参数。 用户密码中包含特殊字符“\”和"`"时,需要增加转义字符才可成功连接数据库。 如果用户未输入该参数,但是数据库连接需要用户密码,这时将出现交互式输入,请用户输入当前连接的密码。该密码最长长度为999字节,受限于GUC参数password_max_length的最大值。 字符串。 父主题: gsql
  • 控制文件 语法说明: 1 2 3 4 5 6 7 8 91011121314151617 LOAD [ DATA ][CHARACTERSET char_set_name][INFILE [directory_path] [filename ] ][BADFILE [directory_path] [filename ] ][OPTIONS(name=value)][{ INSERT | APPEND | REPLACE | TRUNCATE }] INTO TABLE table_name[{ INSERT | APPEND | REPLACE | TRUNCATE }] [FIELDS CS V][TERMINATED [BY] { 'string' }][OPTIONALLY ENCLOSED BY { 'string' }][TRAILING NULLCOLS][ WHEN { (start:end) | column_name } {= | !=} ‘string’ ][(col_name [ [ POSITION ({ start:end }) ] ["sql_string"] ] | [ FILLER [column_type [external] ] ] | [ CONSTANT "string" ] | [ SEQUENCE ( { COUNT | MAX | integer } [, incr] ) ]|[NULLIF (COL=BLANKS)][, ...])]
  • 使用指导 (非三权分立)仅对于普通用户 (在管理员用户下)创建用户。 CREATE USER load_user WITH PASSWORD '************'; (在管理员用户下)将public schema权限赋给普通用户。 GRANT ALL ON SCHEMA public TO load_user; (在管理员用户下)创建并给用户授权gs_copy_summary表。 SELECT copy_summary_create() WHERE NOT EXISTS(SELECT * FROM pg_tables WHERE schemaname='public' AND tablename='gs_copy_summary');GRANT INSERT,SELECT PRIVILEGES ON public.gs_copy_summary To load_user; (可选,在管理员用户下)创建并给用户授权错误表pgxc_copy_error_log。 如果GUC参数enable_copy_error_log未设置(默认为off),或者设置为off,则无需使用错误表,无需创建。否则需要创建该错误表。 SELECT copy_error_log_create() WHERE NOT EXISTS(SELECT * FROM pg_tables WHERE schemaname='public' AND tablename='pgxc_copy_error_log');GRANT INSERT,SELECT,DELETE ON public.pgxc_copy_error_log To load_user; (在管理员用户下)切换用户 \c - load_user (三权分立)对于普通用户和管理员用户。 (在初始用户下)创建用户。 CREATE USER load_user WITH PASSWORD '************'; (在初始用户下)切换为load_user用户。 \c - load_user (在自建用户下)创建gs_copy_summary表并添加索引。 CREATE TABLE load_user.gs_copy_summary(relname varchar, begintime timestamptz, endtime timestamptz, id bigint, pid bigint, readrows bigint, skiprows bigint, loadrows bigint, errorrows bigint, whenrows bigint, allnullrows bigint, detail text);CREATE INDEX gs_copy_summary_idx ON load_user.gs_copy_summary(id); (在自建用户下,可选)创建pgxc_copy_error_log表并添加索引。 如果GUC参数enable_copy_error_log未设置(默认为off),或者设置为off,则无需使用错误表,无需创建。否则需要创建该错误表。 CREATE TABLE load_user.pgxc_copy_error_log (relname varchar, begintime timestamptz, filename varchar, lineno int8, rawrecord text, detail text);CREATE INDEX copy_error_log_relname_idx ON load_user.pgxc_copy_error_log(relname); 创建表和控制文件,准备数据文件。 创建表loader_tbl。 1234567 CREATE TABLE loader_tbl( ID NUMBER, NAME VARCHAR2(20), CON VARCHAR2(20), DT DATE); (在gs_loader客户端)创建控制文件loader.ctl。 1 2 3 4 5 6 7 8 91011 LOAD DATAtruncate into table loader_tblWHEN (2:2) = ',' fields terminated by ','trailing nullcols( id integer external, name char(32), con ":id || '-' || :name", dt date) (在gs_loader客户端)创建guc参数guc.txt set a_format_copy_version='s1'; (在gs_loader客户端)创建数据文件data.csv。 1 2 3 4 5 6 7 8 91011121314 1,OK,,2007-07-82,OK,,2008-07-83,OK,,2009-07-84,OK,,2007-07-843,DISCARD,,2007-07-8,,,32,DISCARD,,2007-07-8a,ERROR int,,2007-07-88,ERROR date,,2007-37-8,,,, ,8,ERROR fields,,2007-37-8,,,5,OK,,2021-07-30 进行导入。 执行导入前,先确认gs_loader工具有可执行权限。确保当前路径有文件写入权限(gs_loader在处理过程中会生成一些临时文件,导入完成后自动删除)。 1 gs_loader control=loader.ctl data=data.csv db=testdb bad=loader.bad errors=5 port=8000 passwd=************ user=load_user 执行结果: 123456 gs_loader: version 0.1 5 Rows successfully loaded. log file is: loader.log gs_copy_summary记录调用的copy语法以及详细情况,[badfile]_bad.log文件记录错误数据以及详细情况,为防止上一次导入时记录的错误数据以及详细情况被覆盖,建议每次执行导入时使用不同的bad参数。pgxc_copy_error_log默认关闭,如果使用错误表pgxc_copy_error_log记录错误数据以及详细情况,请开启guc参数enable_copy_error_log。如需删除表中的数据,可以对上述表执行truncate或者delete操作。
  • 安装部署 在存放数据源文件的服务器上,安装并配置gs_loader客户端工具,以便后续使用gs_loader工具进行数据的导入。 创建存放gs_loader工具包的目录。 mkdir -p /opt/bin 将gsql工具包上传至上一步所创建的目录中。 以EulerOS工具包为例,将软件安装包中的gsql工具包"GaussDB-Kernel_数据库版本号_操作系统版本号_64bit_gsql.tar.gz"上传至上一步所创建的目录中。 在工具包所在目录下,解压工具包。 cd /opt/bintar -zxvf GaussDB-Kernel_数据库版本号_操作系统版本号_64bit_gsql.tar.gzsource gsql_env.sh 验证工具位置及版本信息。 which gs_loader 验证客户端版本信息。 gs_loader工具版本与gsql工具版本相对应,直接查询gsql客户端版本即可。 gsql -V 验证数据库版本信息,确保与客户端工具版本保持一致。 使用gsql工具连接到数据库后输入: select version();
  • 使用权限 使用场景分为三权分立场景下及非三权分立场景下的使用。可以通过将GUC参数enableSeparationOfDuty设置为on或者off,控制三权分立功能的开启或关闭。 GUC参数enable_copy_error_log是控制是否使用错误表pgxc_copy_error_log的参数,默认为off,即不使用错误表,错误数据直接记录到gs_loader的bad文件中。如果该参数设置为on,则会使用错误表pgxc_copy_error_log,将错误数据同时写入bad文件和错误表中。 默认场景,关闭三权分立(即enableSeparationOfDuty=off)时,使用者可以是数据库普通用户或管理员用户。当使用者为普通用户的时候,需要管理员用户对普通用户赋权。管理员账户可以直接使用。 (在管理员用户下)创建用户。 CREATE USER load_user WITH PASSWORD '************'; (在管理员用户下)将public schema权限给用户。 GRANT ALL ON SCHEMA public TO load_user; (在管理员用户下)创建并给用户授权gs_copy_summary表。 gs_copy_summary表中不能含有RULE、TRIGGER、索引函数、行级访问控制、CHECK约束、GENERATED列、DEFAULT列、ON UPDATE列等可能导致提权的对象,否则将认为是恶意用户创建而报错退出。 SELECT copy_summary_create() WHERE NOT EXISTS(SELECT * FROM pg_tables WHERE schemaname='public' AND tablename='gs_copy_summary');GRANT INSERT,SELECT ON public.gs_copy_summary To load_user; (可选,在管理员用户下)创建并给用户授权错误表pgxc_copy_error_log。 如果guc参数enable_copy_error_log未设置(默认为off),或者设置为off,则无需使用错误表,无需创建。否则需要创建该错误表。 pgxc_copy_error_log表中不能含有RULE、TRIGGER、索引函数、行级访问控制、CHECK约束、GENERATED列、DEFAULT列、ON UPDATE列等可能导致提权的对象,否则将认为是恶意用户创建而报错退出。 SELECT copy_error_log_create() WHERE NOT EXISTS(SELECT * FROM pg_tables WHERE schemaname='public' AND tablename='pgxc_copy_error_log');GRANT INSERT,SELECT,DELETE ON public.pgxc_copy_error_log To load_user; 开启三权分立(即enableSeparationOfDuty=on)时,使用者可以是数据库普通用户或管理员用户。使用前需要到各自的Schema下创建pgxc_copy_error_log表以及gs_copy_summary这两张表并添加索引,不需要再进行授权。 (在初始用户下)创建用户。 CREATE USER load_user WITH PASSWORD '********'; (在初始用户下)切换为load_user用户 \c - load_user (在自建用户下)创建gs_copy_summary表并添加索引。 CREATE TABLE load_user.gs_copy_summary(relname varchar, begintime timestamptz, endtime timestamptz, id bigint, pid bigint, readrows bigint, skiprows bigint, loadrows bigint, errorrows bigint, whenrows bigint, allnullrows bigint, detail text);CREATE INDEX gs_copy_summary_idx ON load_user.gs_copy_summary(id); (可选,在自建用户下)创建pgxc_copy_error_log表并添加索引。 如果guc参数enable_copy_error_log未设置(默认为off),或者设置为off,则无需使用错误表,无需创建。否则需要创建该错误表。 CREATE TABLE load_user.pgxc_copy_error_log (relname varchar, begintime timestamptz, filename varchar, lineno int8, rawrecord text, detail text);CREATE INDEX copy_error_log_relname_idx ON load_user.pgxc_copy_error_log(relname);
共99354条