华为云用户手册

  • 请求消息 表2 请求Header参数 参数 是否必选 参数类型 描述 Content-Type 是 String 消息体的类型(格式),默认取值为“application/json;charset=utf8”。 X-Auth-Token 是 String 调用接口的认证方式分为Token和AK/SK两种,如果您使用的Token方式,此参数为必填,请填写Token的值。Token获取方式,请参考获取用户Token。
  • 请求消息 表3 请求Header参数 参数 是否必选 参数类型 描述 Content-Type 是 String 消息体的类型(格式),默认取值为“application/json;charset=utf8”。 X-Auth-Token 是 String 调用接口的认证方式分为Token和AK/SK两种,如果您使用的Token方式,此参数为必填,请填写Token的值。Token获取方式,请参考获取用户Token。 X-Repo-Auth 是 String 授权名称,通过获取仓库授权列表获取对应的授权名称。
  • URI GET /v1/{project_id}/git/repos/{namespace}/{project}/commits 参数说明见表1。 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 租户项目ID。获取方法,请参考获取项目ID。 namespace 是 String 命名空间ID或者URL编码名称。获取方法,请参考获取仓库namespaces。 project 是 String 仓库项目ID或者URL编码名称,如果含有“/”,需要将“/”替换为“:”。获取方法,请参考获取命名空间下所有项目。 表2 查询参数 参数 是否必选 参数类型 描述 ref 否 String 分支名称或者tag名称,如果没有提供,使用默认分支。
  • DependencyMicroService 表1 参数说明 参数 是否必选 参数类型 描述 appId 是 String 应用app唯一标识,字符长度为1~160。正则表达式为^[a-zA-Z0-9]*$|^[a-zA-Z0-9][a-zA-Z0-9_\-.]*[a-zA-Z0-9]$。 serviceName 是 String 微服务名称。作为provider支持为*,表示依赖同一租户下的所有服务。当服务名称为*时,appId和version可以省略。consumer不支持*。字符长度为1~128。正则表达式为^[a-zA-Z0-9]*$|^[a-zA-Z0-9][a-zA-Z0-9_\-.]*[a-zA-Z0-9]$。 version 是 String 版本规则,若为微服务引擎专业版,此参数必填;否则,无此参数。 表示精确版本匹配,如:0.0.1 表示后续版本匹配,如:0.0.1+ 表示最新版本,如:latest 表示版本范围,如:0.1.0-0.2.0 environment 是 String 微服务的环境信息。包括: 空 development testing acceptance production 父主题: 公共请求参数
  • 请求消息 表2 请求Header参数 参数 是否必选 参数类型 描述 Content-Type 是 String 消息体的类型(格式),默认取值为“application/json;charset=utf8”。 X-Auth-Token 是 String 调用接口的认证方式分为Token和AK/SK两种,如果您使用的Token方式,此参数为必填,请填写Token的值。Token获取方式,请参考获取用户Token。 X-Repo-Auth 是 String 授权名称。通过获取仓库授权列表获取对应的授权名称。
  • ServiceInfo 表1 参数说明 参数 是否必选 参数类型 描述 serviceId 是 String 微服务唯一标识,字符为uuid。正则表达式为^.*$。 appId 是 String 应用app唯一标识,字符长度为1~160。正则表达式为^[a-zA-Z0-9]*$|^[a-zA-Z0-9][a-zA-Z0-9_\-.]*[a-zA-Z0-9]$。 serviceName 是 String 微服务名称,同一个App要保证唯一。字符长度为1~128。正则表达式为^[a-zA-Z0-9]*$|^[a-zA-Z0-9][a-zA-Z0-9_\-.]*[a-zA-Z0-9]$。 version 是 String 微服务版本号,字符长度为1~64。正则表达式为^[0-9]*$|^[0-9]+(\.[0-9]+)*$'。 level 是 String 微服务层级。包括: FRONT MIDDLE BACK status 是 String 服务状态。 UP DOWN timestamp 是 String 时间戳。 父主题: 公共响应参数
  • Rule 表1 参数说明 参数 是否必选 参数类型 描述 ruleId 否 String 黑白名单ID。 ruleType 是 String 类型。 WHITE表示白名单。 BLACK表示黑名单。 attribute 是 String 如果是tag_xxx开头,则按Tag过滤attribute属性。 否则,则按ServiceId、AppId、ServiceName、Version、Description、Level、Status过滤。 pattern 是 String 匹配规则,正则表达式,长度1到64个字符。 timestamp 否 String 创建rule的时间,只有获取rule时返回使用。 description 否 String Rule的描述信息,字符长度不超过256。 modTimestamp 否 String 最后修改UTC时间。 父主题: 公共请求参数
  • 请求消息 表3 请求Header参数 参数 是否必选 参数类型 描述 x-environment 否 String 指定查询配置的environment,取值包括:development、testing、acceptance、production。其他值均被作为空值处理。 Authorization 是 String 若微服务引擎专享版开启了安全认证,此参数必填。否则,无此参数。 开启了安全认证的微服务引擎专享版Token,格式为: Authorization:Bearer {Token} Token获取方法,请参考获取微服务引擎专享版用户Token。
  • URI GET /v3/{project_id}/configuration/items 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 微服务引擎专业版,请填租户项目id,长度为1~64。也可以填固定值default。 微服务引擎专享版,请填固定值:default。 表2 Query参数 参数 是否必选 参数类型 描述 dimensionsInfo 是 String 服务信息,为服务名、应用、版本的拼接(服务名、应用必填,版本选填),拼接格式为(请注意“@”和“#”添加到http url时需转义,“@”转义为“%40”,“#”转义为“%23”): {serviceName}@{appId}#{version} 或{serviceName}@{appId} 不能包含$%^&+/\特殊字符和空格。 keyFilter 否 String key的筛选条件, 支持正则表达式。涉及特殊字符的正则表达式需要自行转义。 revision 否 String 配置项版本。用于判断本地缓存配置和配置管理中心的配置差异。 首次传值0。 若传入的revision值与当前配置的revision一致,则返回304状态码,无body体返回;若不一致,则返回当前配置和revision信息。 下次请求若需要传入revision,则该值为当前返回body体中的revision中的version的值 。
  • 基本概念 账号 用户注册华为云时的账号,账号对其所拥有的资源及云服务具有完全的访问权限,可以重置用户密码、分配用户权限等。由于账号是付费主体,为了确保账号安全,建议您不要直接使用账号进行日常管理工作,而是创建并使用用户进行日常管理工作。 用户 由账号在 IAM 中创建的用户,是云服务的使用人员,具有身份凭证(密码和访问密钥)。 在我的凭证下,您可以查看账号ID和用户ID。通常在调用API的鉴权过程中,您需要用到账号、用户和密码等信息。 区域(Region) 从地理位置和网络时延维度划分,同一个Region内共享弹性计算、块存储、对象存储、VPC网络、弹性公网IP、镜像等公共服务。Region分为通用Region和专属Region,通用Region指面向公共租户提供通用云服务的Region;专属Region指只承载同一类业务或只面向特定租户提供业务服务的专用Region。 详情请参见区域和可用区。 可用区(AZ,Availability Zone) 一个AZ是一个或多个物理数据中心的集合,有独立的风火水电,AZ内逻辑上再将计算、网络、存储等资源划分成多个集群。一个Region中的多个AZ间通过高速光纤相连,以满足用户跨AZ构建高可用性系统的需求。 项目 华为云的区域默认对应一个项目,这个项目由系统预置,用来隔离物理区域间的资源(计算资源、存储资源和网络资源),以默认项目为单位进行授权,用户可以访问您账号中该区域的所有资源。如果您希望进行更加精细的权限控制,可以在区域默认的项目中创建子项目,并在子项目中购买资源,然后以子项目为单位进行授权,使得用户仅能访问特定子项目中资源,使得资源的权限控制更加精确。 图1 项目隔离模型 同样在我的凭证下,您可以查看项目ID。 企业项目 企业项目是项目的升级版,针对企业不同项目间资源的分组和管理,是逻辑隔离。企业项目中可以包含多个区域的资源,且项目中的资源可以迁入迁出。 关于企业项目ID的获取及企业项目特性的详细信息,请参见《企业管理服务用户指南》。
  • 响应示例 { "total": 1, "per_page": 20, "page": 1, "finished": 1, "successful": 1, "list": [ { "build_id": "0f7fqckzmjcfi0f7yxhx91l2rwrfyzd2poac90b5", "build_state": "Successful", "duration": 1181 } ]}
  • 响应消息 表3 响应参数 参数 参数类型 描述 list Array of object 构建阶段结构体,请参考表4。 total Integer 构建阶段数量。 page Integer 分页开始的位置。 per_page Integer 分页大小。 finished Integer 完成的构建实例个数。 successful Integer 成功的构建实例个数。 表4 list 参数 参数类型 描述 build_id String 构建任务实例ID。 build_state String 构建实例状态。 Cancel:取消 Failed:失败 Successful:成功 Timeout:超时。 duration Integer 构建耗时,单位为秒。
  • 请求消息 表2 请求Header参数 参数 是否必选 参数类型 描述 Content-Type 是 String 消息体的类型(格式),默认取值为“application/json;charset=utf8”。 X-Auth-Token 是 String 调用接口的认证方式分为Token和AK/SK两种,如果您使用的Token方式,此参数为必填,请填写Token的值。Token获取方式,请参考获取用户Token。
  • 资源和成本规划 该解决方案主要部署如下资源,以下费用仅供参考,具体请参考华为云官网价格详情,实际收费以账单为准。 表1 资源和成本规划(按需计费) 华为云服务 配置示例 每月预估花费 华为云Flexus云服务器X实例 按需计费 区域:华北-北京四 规格:Flexus云服务器X实例 | 性能模式(关闭)| x1.2u.4g | 2核 | 4 GB 镜像:CentOS 7.9 64bit 系统盘:高IO | 40GB 购买量:2 352.22元 弹性公网IP EIP 区域:华北-北京四 计费模式:按需计费 线路:动态BGP 公网带宽:按流量计费 带宽大小:300Mbit/s 购买量:2 0.80元/GB 合计 - 352.22元 + 弹性公网IP EIP费用 表2 资源和成本规划(包年包月) 华为云服务 配置示例 每月预估花费 华为云Flexus云服务器X实例 包年包月 区域:华北-北京四 规格:Flexus云服务器X实例 | 性能模式(关闭)| x1.2u.4g | 2核 | 4 GB 镜像:CentOS 7.9 64bit 系统盘:高IO | 40GB 购买量:2 244.00元 弹性公网IP EIP 区域:华北-北京四 计费模式:按需计费 线路:动态BGP 公网带宽:按流量计费 带宽大小:300Mbit/s 购买量:2 0.80元/GB 合计 - 244.00元 + 弹性公网IP EIP费用
  • 方案架构 该解决方案基于Flexus云服务器X实例帮助您快速搭建公网IP不变业务迁移系统。 图1 方案架构图 该解决方案将会部署如下资源: 客户源端 创建两台Flexus云服务器X实例,并部署Nginx、Keepalived应用,实现主备切换。 创建两个弹性公网IP EIP并绑定到云服务器,用于提供访问公网和被公网访问能力。 目的端 创建两台Flexus云服务器X实例,模拟业务。 创建两个弹性公网IP EIP并绑定到云服务器,用于提供访问公网和被公网访问能力。
  • 快速部署 本章节主要帮助用户快速部署“公网IP不变业务迁移最佳实践”解决方案 表1 参数说明 参数名称 类型 是否可选 参数解释 默认值 vpc_name string 必填 虚拟私有云名称,该模板使用新建VPC,不允许重名。取值范围:1-54个字符,支持中文、英文字母、数字、_(下划线)、-(中划线)、.(点)。 migrating-services-without-changing-ip-addresses-demo secgroup_name string 必填 安全组名称,该模板新建安全组,请参考安全组规则修改进行配置。取值范围:1-64个字符,支持字母、数字、中文、下划线(_)、中划线(-)、英文句号(.)。 migrating-services-without-changing-ip-addresses-demo ecs_name string 必填 云服务器实例名称,不支持重名。取值范围:1-64个字符,支持中文、英文字母、数字、_(下划线)、-(中划线)、.(点)。 migrating-services-without-changing-ip-addresses-demo flexus_flavor string 必填 云服务器实例规格,支持弹性云服务器 E CS 及华为云Flexus 云服务器X实例。Flexus 云服务器X实例规格ID命名规则为x1.?u.?g,例如2vCPUs4GiB规格ID为x1.2u.4g,具体华为云Flexus 云服务器X实例规格请参考控制台。弹性云服务器规格名称,具体请参考官网弹性云服务器规格清单。 x1.2u.4g ecs_password string 必填 云服务器密码,长度为8-26位,密码至少必须包含大写字母、小写字母、数字和特殊字符(!@$%^-_=+[{}]:,./?)中的三种,仅支持小写字母、数字、中划线(-)、英文句号(.)。修改密码,请参考重置云服务器密码登录ECS控制台修改密码。管理员账户默认root。 空 ecs_volume_size number 必填 云服务器系统盘大小,磁盘类型默认为高IO,单位:GB,取值范围为40-1,024,不支持缩盘。 100 bandwidth_size number 必填 弹性公网带宽大小,该模板计费方式为按流量计费。单位:Mbit/s,取值范围:1-300Mbit/s。 300 charging_mode string 必填 计费模式,默认自动扣费,取值为prePaid(包年包月)或postPaid(按需计费)。 postPaid charge_period_unit string 必填 计费周期单位,当计费方式设置为prePaid,此参数是必填项。有效值为:month(包月)和year(包年)。 month charge_period number 必填 计费周期,当计费模式设置为prePaid,此参数是必填项。可选值为:1-3(year)、1-9(month)。 1 登录华为云解决方案实践,选择“公网IP不变业务迁移最佳实践”,单击“一键部署”,跳转至解决方案创建资源栈界面。 图1 解决方案实施库 在选择模板界面中,单击“下一步”。 图2 选择模板 在配置参数界面中,参考表1 参数填写说明完成自定义参数填写,单击“下一步”。 图3 配置参数 在资源设置界面中,在权限委托下拉框中选择“rf_admin_trust”委托(可不选),单击“下一步”。 图4 资源栈设置 在配置确认界面中,单击“创建执行计划”。 图5 配置确认 在弹出的创建执行计划框中,自定义填写执行计划名称,单击“确定”。 图6 创建执行计划 单击“部署”,并且在弹出的执行计划确认框中单击“执行”。 图7 执行计划 图8 执行计划确认 (可选)如果计费模式选择“包年包月”,在余额不充足的情况下(所需总费用请参考表2)请及时登录费用中心,手动完成待支付订单的费用支付。 待“事件”中出现“Apply required resource success”,表示该解决方案已经部署完成。 图9 部署完成 父主题: 实施步骤
  • 动态添加路由 动态添加路由(keepalived):源端通过公网访问目的端时,对应的业务需要使用自己的源端公网IP作为出口IP,因此需要配置虚拟IP的转发路由。 由于虚拟IP地址会进行漂移,并且在未绑定虚拟IP地址的服务器上不能添加虚拟IP对应的路由规则,所以当虚拟IP漂移到主备云服务器中的一台时,需要为主备服务器动态添加路由。 请登录源端(上海一)的主备服务器,执行步骤1-步骤2的操作。 创建添加路由脚本命令:vim /etc/keepalived/addRoute.sh 替换以下字段的值: destination1:web1服务EIP1 destination2:web2服务EIP2 destinationVip1:虚拟IP1 destinationVip2:虚拟IP2 添加如下内容 #!/bin/bash# 要检查的路由目的地destination1="1.94.xx.22"destination2="113.44.xx.99"destinationVip1="172.16.0.203"destinationVip2="172.16.0.47"# 使用ip route show查找路由,通过grep检查输出if ip route show | grep -q "$destination1" ; then echo "路由到 $destination1 存在。"else echo "路由到 $destination1 不存在。" ip route add $destination1 via 172.16.0.1 dev eth0 src $destinationVip1fiif ip route show | grep -q "$destination2" ; then echo "路由到 $destination2 存在。"else echo "路由到 $destination2 不存在。" ip route add $destination2 via 172.16.0.1 dev eth0 src $destinationVip2fi 为路由脚本添加可执行权限 命令:chmod +x /etc/keepalived/addRoute.sh 添加路由脚本:在Nginx监控脚本中加入添加路由脚本,替换原有内容。 vim /etc/keepalived/chk_nginx.sh 加入添加以下路由执行脚本 #!/bin/bashsh /etc/keepalived/addRoute.shcounter=$(ps -C nginx --no-heading|wc -l)if [ "${counter}" = "0" ]; then systemctl start nginx.service sleep 2 counter=$(ps -C nginx --no-heading|wc -l) if [ "${counter}" = "0" ]; then systemctl stop keepalived.service fifi 在主服务器上可以查看已配置的路由信息 命令:ip route
  • 验证主备服务器的自动切换功能 接验证主备切换所示,主服务器为Flexus-X-HA2,远程登录Flexus-X-HA2,并执行以下命令,查看虚拟IP是否已绑定到Flexus-X-HA2。回显类似如下信息,可以看到虚拟IP1(172.16.0.203)和虚拟IP2(172.16.0.47)已绑定至eth0网卡上,再次确认Flexus-X-HA2为主服务器。 命令:ip a 图5 网卡信息 执行以下命令,停止主服务器的Keepalived服务或者重启主ECS二选一,本示例中主服务器为Flexus-X-HA2。 停止Keepalived服务命令:systemctl stop keepalived.service重启主ECSreboot 打开浏览器,输入绑定在虚拟IP1上的EIP1(1.94.xxx.236)、输入绑定在虚拟IP2上的EIP2(115.120.xxx.252),验证主服务器挂掉之后能否正常访问网页。 网页如下图所示,表示网页访问正常。 图6 web1 图7 web2 执行以下命令,验证主ECS是否切换成Flexus-X-HA1。远程登录Flexus-X-HA1,并执行以下命令,查看虚拟IP是否已绑定到Flexus-X-HA1的eth0网卡上。 回显类似如下信息,可以看到虚拟IP1(172.16.0.203)和虚拟IP2(172.16.0.47)已绑定至eth0网卡上,此时确认Flexus-X-HA1为主ECS。 命令:ip addr show 图8 网卡信息
  • 安全组规则修改(可选) 安全组实际是网络流量访问策略,包括网络流量入方向规则和出方向规则,通过这些规则为安全组内具有相同保护需求并且相互信任的云服务器、云容器、云数据库等实例提供安全保护。 如果您的实例关联的安全组策略无法满足使用需求,比如需要添加、修改、删除某个TCP端口,请参考以下内容进行修改。 添加安全组规则:根据业务使用需求需要开放某个TCP端口,请参考添加安全组规则添加入方向规则,打开指定的TCP端口。 修改安全组规则:安全组规则设置不当会造成严重的安全隐患。您可以参考修改安全组规则,来修改安全组中不合理的规则,保证云服务器等实例的网络安全。 删除安全组规则:当安全组规则入方向、出方向源地址/目的地址有变化时,或者不需要开放某个端口时,您可以参考删除安全组规则进行安全组规则删除。
  • 配置转发规则 在源端(上海一)的主备服务器上分别配置Nginx的转发规则,执行以下命令,创建转发配置文件,添加如下内容。 命令:vim /etc/nginx/conf.d/web-src.conf 修改替换以下内容 server:web服务绑定的两个EIP server_name:虚拟IP绑定的两个EIP upstream web1 {server 1.94.xx.22:80;}upstream web2 {server 113.44.xx.99:80;}server {listen 80;server_name 1.94.xxx.236;access_log /var/log/nginx/web1.access.log main;error_log /var/log/nginx/web1.error.log crit;location / {proxy_pass http://web1;proxy_set_header Host $http_host;}}server {listen 80;server_name 115.120.xxx.252;access_log /var/log/nginx/web2.access.log main;error_log /var/log/nginx/web3.error.log crit;location / {proxy_pass http://web2;proxy_set_header Host $http_host;}} 执行以下命令热加载生效Nginx配置 命令:nginx -s reload
  • 客户源端配置(region:上海一 模拟客户源端) 购买Flexus X实例:访问Flexus云服务器X实例控制台,参考购买Flexus X实例教程,按如下配置购买X实例。 表1 X实例相关配置 资源类型 资源数量 配置 示例说明 虚拟私有云VPC 和子网 1 IPv4网段:172.16.0.0/24 子网IPv4网段:172.16.0.0/24 详见创建虚拟私有云和子网指南。 弹性 云服务器ECS 2 按需计费 区域:华东-上海一 规格:性能模式(关闭)| 2核 | 4 GB 镜像:CentOS 7.9 64bit 系统盘:通用型SSD | 40GB 本示例中,需要两个ECS作为主备倒换,配置说明如下: 名称:本示例分别为Flexus-X-HA1和Flexus-X-HA2。 安全组:本示例中Flexus-X-HA1和Flexus-X-HA2使用同一个安全组。 私有IP地址:Flexus-X-HA1为172.16.0.127,Flexus-X-HA2为172.16.0.97 弹性公网IP 2 线路:全动态BGP 公网带宽:按流量计费 带宽大小:300Mbit/s 本示例中EIP1为1.94.xxx.236,EIP2为115.120.xxx.252。 表2 安全组配置 方向 策略 类型 协议端口 源地址/目的地址 描述 入方向 允许 IPv4 TCP: 22 源地址:0.0.0.0/0 放通安全组内ECS的SSH(22)端口,用于远程登录Linux ECS。 入方向 允许 IPv4 TCP: 80 源地址:0.0.0.0/0 放通安全组内ECS的HTTP(80)端口,用于外部通过HTTP协议访问ECS上部署的网站。 入方向 允许 IPv4 全部 源地址:当前安全组 针对IPv4,用于安全组内ECS之间网络互通。 入方向 允许 IPv6 全部 源地址:当前安全组 针对IPv6,用于安全组内ECS之间网络互通。 出方向 允许 IPv4 全部 目的地址:0.0.0.0/0 针对IPv4,用于安全组内ECS访问外部,允许流量从安全组内ECS流出。 出方向 允许 IPv6 全部 目的地址:::/0 针对IPv6,用于安全组内ECS访问外部,允许流量从安全组内ECS流出。 申请虚拟IP地址:在源端子网中申请两个虚拟IP地址,具体方法请参见申请虚拟IP地址(本示例中虚拟IP1为172.16.0.203,虚拟IP2为172.16.0.47)。 图8 虚拟IP地址 安装Nginx、Keepalived软件包及相关依赖:登录主备Flexus-X-HA1、Flexus-X-HA2服务器,执行以下命令,安装Nginx、Keepalived软件包及相关依赖包 命令:yum install nginx keepalived -y 配置nginx:修改index.html文件内容,用来验证网站的访问情况。执行以下命令,打开“/usr/share/nginx/html/index.html”文件。将文件中原有的内容,全部替换成以下内容。 命令:vim /usr/share/nginx/html/index.htmlFlexus-X-HA1改为Welcome to Flexus-X-HA1Flexus-X-HA2改为Welcome to Flexus-X-HA2 启动Nginx:执行以下命令,设置Nginx服务开机自启动,并启动Nginx服务。 命令:systemctl enable nginxsystemctl start nginx.service 验证Nginx:打开浏览器,并输入EIP地址,验证Nginx单节点的访问情况,网页如下图所示,表示Flexus-X-HA1和Flexus-X-HA2的Nginx配置成功。 图9 Flexus-X-HA1 图10 Flexus-X-HA2 配置Keepalived:执行以下命令,打开“/etc/keepalived/keepalived.conf”文件,根据实际情况,替换配置文件中的IP参数,并将文件中原有的内容,全部替换成以下内容。 命令:vim /etc/keepalived/keepalived.conf Flexus-X-HA1: mcast_src_ip和unicast_src_ip参数值:替换为Flexus-X-HA1的私有IP地址,本示例为172.16.0.127。 virtual_ipaddress参数值:替换为虚拟IP地址,本示例为172.16.0.47和172.16.0.203 ! Configuration File for keepalivedglobal_defs {router_id master-node}vrrp_script chk_http_port { script "/etc/keepalived/chk_nginx.sh" interval 2 weight -5 fall 2 rise 1 }vrrp_instance VI_1 { state MASTER interface eth0 mcast_src_ip 172.16.0.127 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } unicast_src_ip 172.16.0.127 virtual_ipaddress { 172.16.0.47 172.16.0.203 } track_script { chk_http_port }} Flexus-X-HA2: mcast_src_ip和unicast_src_ip参数值:替换为Flexus-X-HA2的私有IP地址,本示例为172.16.0.97。 virtual_ipaddress参数值:替换为虚拟IP地址,本示例为172.16.0.47和172.16.0.203。 ! Configuration File for keepalivedglobal_defs {router_id master-node}vrrp_script chk_http_port { script "/etc/keepalived/chk_nginx.sh" interval 2 weight -5 fall 2 rise 1 }vrrp_instance VI_1 { state MASTER interface eth0 mcast_src_ip 172.16.0.97 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } unicast_src_ip 172.16.0.97 virtual_ipaddress { 172.16.0.47 172.16.0.203 } track_script { chk_http_port }} 配置Nginx监控脚本:主备服务器执行以下命令,打开“/etc/keepalived/chk_nginx.sh”文件,将文件中原有的内容,全部替换成以下内容。 命令:vim /etc/keepalived/chk_nginx.sh#!/bin/bashcounter=$(ps -C nginx --no-heading|wc -l)if [ "${counter}" = "0" ]; then systemctl start nginx.service sleep 2 counter=$(ps -C nginx --no-heading|wc -l) if [ "${counter}" = "0" ]; then systemctl stop keepalived.service fifi 脚本权限:主备服务器执行以下命令,为“chk_nginx.sh”文件添加执行权限。 命令:chmod +x /etc/keepalived/chk_nginx.sh 启动Keepalived:主备服务器执行以下命令,设置Keepalived服务开机自启动,并启动Keepalived服务。 命令:systemctl enable keepalivedsystemctl start keepalived.service 绑定虚拟IP:将Flexus-X-HA1和Flexus-X-HA2两台服务器的EIP进行解绑,具体方法参见解绑弹性公网IP。然后将虚拟IP绑定至实例和弹性公网IP详见:将虚拟IP绑定至实例或者EIP指南。(注意控制台绑定完成需要登录服务器配置虚拟IP地址),如下图所示。 图11 虚拟IP绑定 表3 虚拟ip配置 虚拟IP 2 虚拟IP1:172.16.0.203 虚拟IP2:172.16.0.47 绑定实例:将两个虚拟IP绑定至Flexus-X-HA1和Flexus-X-HA2 绑定弹性公网IP:将虚拟IP1绑定至EIP1(1.94.xx.236),将虚拟IP2绑定至EIP2(115.120.xx.252)。 (可选)关闭主备服务器的IP转发功能(本示例中服务器默认关闭):使用虚拟IP构建主备场景的高可用集群时,需要关闭备云服务器的IP转发功能,当主备云服务器切换后,则需要确保新的云服务器也关闭IP转发功能。为了避免云服务器主备切换后遗漏配置,建议您将主备云服务器的IP转发功能全都关闭。关闭IP转发功能的操作如下: 切换root用户。命令:su root执行以下命令,查看IP转发功能是否已开启。命令:cat /proc/sys/net/ipv4/ip_forward回显结果:1为开启,0为关闭,默认为0。回显为0,任务结束。回显为1,继续执行以下操作。以下提供两种方法修改配置文件,二选一即可。方法一:执行以下命令,打开“/etc/sysctl.conf”文件。命令:vim /etc/sysctl.conf按i进入编辑模式。修改net.ipv4.ip_forward = 0。按ESC退出,并输入:wq!保存配置。方法二:执行sed命令,命令示例如下:命令:sed -i '/net.ipv4.ip_forward/s/1/0/g' /etc/sysctl.conf执行以下命令,使修改生效。命令:sysctl -p /etc/sysctl.conf 重启主备服务器:执行以下命令,分别重启主备服务器Flexus-X-HA1和Flexus-X-HA2 命令:reboot 验证自动切换功能:打开浏览器,分别输入EIP1(1.94.xx.236)、EIP2(115.120.xx.252),验证主服务器的网页访问情况,网页如下图所示,表示此时主服务器是Flexus-X-HA1,表明配置正常。 图12 图13 确认网卡是否正确配置:远程登录Flexus-X-HA1,并执行以下命令,查看虚拟IP是否已绑定到Flexus-X-HA1的eth0网卡上,回显类似如下信息,虚拟IP1(172.16.0.203)和虚拟IP2(172.16.0.47)已绑定至eth0网卡上,再次确认Flexus-X-HA1为主服务器。 命令:ip addr show 图14 主服务器网卡配置 主备切换:执行以下命令,停止主服务器的Keepalived服务或者重启主云服务器二选一,本示例中主云服务器为Flexus-X-HA1。 停止Keepalived服务命令: systemctl stop keepalived.service重启主云服务器命令:reboot 验证主备切换:执行以下命令,验证主服务器是否切换成Flexus-X-HA2。远程登录Flexus-X-HA2,并执行以下命令,查看虚拟IP是否已绑定到Flexus-X-HA2的eth0网卡上。 命令:ip addr show 图15 备服务器网卡配置 验证自动切换功能:打开浏览器,并分别输入EIP1(1.94.xx.236)、EIP2(115.120.xx.252),验证Flexus-X-HA2作为主服务器时的网页访问情况。 网页如下图所示,表示此时主服务器是Flexus-X-HA2,且网页访问正常。 图16 图17
  • 创建rf_admin_trust委托(可选) 进入华为云官网,打开控制台管理界面,鼠标移动至个人账号处,打开“ 统一身份认证 ”菜单。 图1 控制台管理界面 图2 统一身份认证菜单 进入“委托”菜单,搜索“rf_admin_trust”委托。 图3 委托列表 如果委托存在,则不用执行接下来的创建委托的步骤 如果委托不存在,则需执行以下步骤创建委托 单击步骤2界面中的“创建委托”按钮,在委托名称中输入“rf_admin_trust”,委托类型选择“云服务”,选择“ RFS ”,单击“下一步”。 图4 创建委托 在搜索框中输入“Tenant Administrator”权限,并勾选搜索结果,单击“下一步”。 图5 选择策略 选择“所有资源”,并单击“下一步”完成配置。 图6 设置授权范围 “委托”列表中出现“rf_admin_trust”委托则创建成功。 图7 委托列表
  • 名词解释 华为云Flexus云服务器X实例:Flexus云服务器X实例是新一代面向中小企业和开发者打造的柔性算力云服务器。Flexus云服务器X实例功能接近ECS, 同时还具备独有特点,例如Flexus云服务器X实例具有更灵活的vCPU内存配比、支持热变配不中断业务变更规格、支持性能模式等。 弹性云服务器 ECS:是一种云上可随时自助获取、可弹性伸缩的计算服务,可帮助您打造安全、可靠、灵活、高效的应用环境。 虚拟私有云 VPC:是用户在华为云上申请的隔离的、私密的虚拟网络环境。用户可以基于VPC构建独立的云上网络空间,配合弹性公网IP、云连接、云专线等服务实现与Internet、云内私网、跨云私网互通,帮您打造可靠、稳定、高效的专属云上网络。 弹性公网IP EIP:提供独立的公网IP资源,包括公网IP地址与公网出口带宽服务。可以与弹性云服务器、裸金属服务器、虚拟IP、弹性负载均衡、NAT网关等资源灵活地绑定及解绑,提供访问公网和被公网访问能力。
  • DDS和GeminiDB Mongo有什么区别 文档数据库服务(DDS)完全兼容社区版MongoDB协议,提供安全、高可用、高可靠、弹性伸缩和易用的数据库服务,同时提供一键部署、弹性扩容、容灾、备份、恢复、监控和告警等功能,主要面向数据规模较小,性能要求一般的业务场景。更多DDS信息请参见产品简介。 GeminiDB Mongo,也称增强版MongoDB,是基于华为自主研发的计算存储分离架构的分布式NoSQL数据库服务。100%兼容MongoDB接口,并提供高性能、高可靠的优势和企业级服务。更多GeminiDB Mongo信息请参见产品简介。 父主题: 产品咨询
  • PATTERN 很多\d命令都可以用一个PATTERN参数来指定要被显示的对象名称。在最简单的情况下,PATTERN正好就是该对象的准确名称。在PATTERN中的字符通常会被变成小写形式(就像在SQL名称中那样),例如\dt FOO将会显示名为foo的表。就像在SQL名称中那样,把PATTERN放在双引号中可以阻止它被转换成小写形式。如果需要在一个PATTERN中包括一个真正的双引号字符,则需要把它写成两个相邻的双引号,这同样是符合SQL引用标识符的规则。例如,\dt "FOO""BAR"将显示名为FOO"BAR(不是foo"bar)的表。和普通的SQL名称规则不同,不能只在PATTERN的一部分周围放上双引号,例如\dt FOO"FOO"BAR将会显示名为fooFOObar的表。 不使用PATTERN参数时,\d命令会显示当前schema搜索路径中可见的全部对象——这等价于用*作为PATTERN。所谓对象可见是指可以直接用名称引用该对象,而不需要用schema来进行限定。要查看数据库中所有的对象而不管它们的可见性,可以把*.*用作PATTERN。 如果放在一个PATTERN中,*将匹配任意字符序列(包括空序列),而?会匹配任意的单个字符(这种记号方法就像 Unix shell 的文件名PATTERN一样)。例如,\dt int*会显示名称以int开始的表。但是如果被放在双引号内,*和?就会失去这些特殊含义而变成普通的字符。 包含一个点号(.)的PATTERN被解释为一个schema名称模式后面跟上一个对象名称模式。例如,\dt foo*.*bar*会显示名称以foo开始的schema中所有名称包括bar的表。如果没有出现点号,那么模式将只匹配当前schema搜索路径中可见的对象。同样,双引号内的点号会失去其特殊含义并且变成普通的字符。 高级用户可以使用字符类等正则表达式记法,如[0-9]可以匹配任意数字。所有的正则表达式特殊字符都按照POSIX正则表达式所说的工作。以下字符除外: .会按照上面所说的作为一种分隔符。 *会被翻译成正则表达式记号.*。 ?会被翻译成.。 $则按字面意思匹配。 根据需要,可以通过书写?、(R+|)、(R|)和R?来分别模拟PATTERN字符.、R*和R?。$不需要作为一个正则表达式字符,因为PATTERN必须匹配整个名称,而不是像正则表达式的常规用法那样解释(换句话说,$会被自动地追加到PATTERN上)。如果不希望该PATTERN的匹配位置被固定,可以在开头或者结尾写上*。注意在双引号内,所有的正则表达式特殊字符会失去其特殊含义并且按照其字面意思进行匹配。另外,在操作符名称PATTERN中(即\do的PATTERN参数),正则表达式特殊字符也按照字面意思进行匹配。
  • 元命令 元命令的详细说明请参见表1、表2、表3、表4、表6、表8、表9、表10、表12和表13。 以下命令中所提到的FILE代表文件路径。此路径可以是绝对路径(如/home/gauss/file.txt),也可以是相对路径(file.txt,file.txt会默认在用户执行gsql命令所在的路径下创建)。 表1 一般的元命令 参数 参数说明 取值范围 \copyright 显示 GaussDB 的版本和版权信息。 - \g [FILE] or ; 执行查询(并将结果发送到文件或管道)。 - \h(\help) [NAME] 给出指定SQL语句的语法帮助。 如果没有给出NAME,gsql将列出可获得帮助的所有命令。如果NAME是一个星号(*),则显示所有SQL语句的语法帮助。 \parallel [on [num]|off] 控制并发执行开关。 on:打开控制并发执行开关,且最大并发数为num。 off:关闭控制并发执行开关。 说明: 不支持事务中开启并发执行以及并发中开启事务。 不支持\d这类元命令的并发。 并发select返回结果混乱问题,此为客户可接受,core、进程停止响应不可接受。 不推荐在并发中使用set语句,否则导致结果与预期不一致。 不支持创建临时表!如需使用临时表,需要在开启parallel之前创建好,并在parallel内部使用。parallel内部不允许创建临时表。 \parallel执行时最多会启动num个独立的gsql进程连接服务器。 \parallel中所有作业的持续时间不能超过session_timeout,否则可能会导致并发执行过程中断连。 在\parallel on 之后一条或多条命令,会等到\parallel off执行后才会执行,因而,\parallel on之后需要有对应的\parallel off,否则\parallel on后的命令都无法执行。 num的默认值:1024。 须知: 服务器能接受的最大连接数受max_connection及当前已有连接数限制。 设置num时请考虑服务器当前可接受的实际连接数合理指定。 \q 退出gsql程序。在一个脚本文件里,只在脚本终止的时候执行。 - 表2 查询缓存区元命令 参数 参数说明 \e [FILE] [LINE] 使用外部编辑器编辑查询缓冲区(或者文件)。 \ef [FUNCNAME [LINE]] 使用外部编辑器编辑函数定义。如果指定了LINE(即行号),则光标会指到函数体的指定行。 \p 打印当前查询缓冲区到标准输出。 \r 重置(或清空)查询缓冲区。 \w FILE 将当前查询缓冲区输出到文件。 表3 输入/输出元命令 参数 参数说明 \copy { table [ ( column_list ) ] | ( query ) } { from | to } { filename | stdin | stdout | pstdin | pstdout }[LOAD] [LOAD_DISCARD 'string'] [ with ] [ binary ] [ oids ] [ delimiter [ as ] 'character' ] [ useeof ] [ null [ as ] 'string' ] [ csv [ header ] [ quote [ as ] 'character' ] [ escape [ as ] 'character' ] [ force quote column_list | * ] [ force not null column_list ] ] [parallel integer] 在任何gsql客户端登录数据库成功后可以执行导入导出数据,这是一个运行SQL COPY命令的操作,但不是读取或写入指定文件的服务器,而是读取或写入文件,并在服务器和本地文件系统之间路由数据。这意味着文件的可访问性和权限是本地用户的权限,而不是服务器的权限,并且不需要数据库初始化用户权限。 说明: \COPY只适合小批量,格式良好的数据导入,导入数据应优先选择GDS或COPY。 \COPY 可以指定数据导入时的客户端数量,从而实现数据文件的并行导入,目前并发数范围为[1, 8]。 \COPY并行导入目前存在以下约束:临时表的并行导入不支持、在事务内的并行导入不支持、对二进制文件的并行导入不支持、数据导入支持AES128加密时不支持以及COPY选项中存在EOL。在这些情况下,即使指定了parallel参数,仍然会走非并行流程。 \COPY的text格式和csv格式均支持header功能 其中LOAD功能为gs_loader进行语法转换后调用copy的标识,非主动调用功能。 其中LOAD_DISCARD功能为gs_loader解析后discard文件路径,非主动调用功能。 \echo [STRING] 把字符串写到标准输出。 prompt [STRING] 把字符串写到标准输出(等同于\echo)。 \i FILE 从文件FILE中读取内容,并将其当作输入,执行查询。 \i+ FILE KEY 执行加密文件中的命令。 \ir FILE 和\i类似,只是相对于存放当前脚本的路径。 \ir+ FILE KEY 和\i+类似,只是相对于存放当前脚本的路径。 \o [FILE] 把所有的查询结果发送到文件里。 \qecho [STRING] 把字符串写到查询结果输出流里。 表4中的选项S表示显示系统对象,+表示显示对象附加的描述信息。PATTERN用来指定要被显示的对象名称。 表4 显示信息元命令 参数 参数说明 取值范围 示例 \d[S+] 列出当前search_path中模式下所有的表、视图和序列。当search_path中不同模式存在同名对象时,只显示search_path中位置靠前模式下的同名对象。 - 列出当前search_path中模式下所有的表、视图和序列。 1 gaussdb=# \d \d[S+] NAME 列出指定表、视图和索引的结构。当search_path中不同模式存在同名对象时,只显示search_path中位置靠前模式下的同名对象。 - 假设存在表a,列出指定表a的结构。 1 gaussdb=# \dtable+ a \d+ [PATTERN] 列出所有表、视图和索引。当search_path中不同模式存在同名对象时,只显示search_path中位置靠前模式下的同名对象。 如果声明了PATTERN,只显示名称匹配PATTERN的表、视图和索引。 列出所有名称以f开头的表、视图和索引。 1 gaussdb=# \d+ f* \da[S] [PATTERN] 列出所有可用的聚集函数,以及它们操作的数据类型和返回值类型。当search_path中不同模式存在同名对象时,只显示search_path中位置靠前模式下的同名对象。 如果声明了PATTERN,只显示名称匹配PATTERN的聚集函数。 列出所有名称以f开头可用的聚集函数,以及它们操作的数据类型和返回值类型。 1 gaussdb=# \da f* \db[+] [PATTERN] 列出所有可用的表空间。 如果声明了PATTERN,只显示名称匹配PATTERN的表空间。 列出所有名称以p开头的可用表空间。 1 gaussdb=# \db p* \dc[S+] [PATTERN] 列出所有字符集之间的可用转换。当search_path中不同模式存在同名对象时,只显示search_path中位置靠前模式下的同名对象。 如果声明了PATTERN,只显示名称匹配PATTERN的转换。 列出所有字符集之间的可用转换。 1 gaussdb=# \dc * \dC[+] [PATTERN] 列出所有类型转换。 PATTERN需要使用实际类型名,不能使用别名。当search_path中不同模式存在同名对象时,只显示search_path中位置靠前模式下的同名对象。 如果声明了PATTERN,只显示名称匹配PATTERN的转换。 列出所有名称以c开头的类型转换。 1 gaussdb=# \dC c* \dd[S] [PATTERN] 显示所有匹配PATTERN的描述。当search_path中不同模式存在同名对象时,只显示search_path中位置靠前模式下的同名对象。 如果没有给出参数,则显示所有可视对象。“对象”包括:聚集、函数、操作符、类型、关系(表、视图、索引、序列、大对象)、规则。 列出所有可视对象。 1 gaussdb=# \dd \ddp [PATTERN] 显示所有默认的使用权限。 如果指定了PATTERN,只显示名称匹配PATTERN的使用权限。 列出所有默认的使用权限。 1 gaussdb=# \ddp \dD[S+] [PATTERN] 列出所有可用域。当search_path中不同模式存在同名对象时,只显示search_path中位置靠前模式下的同名对象。 如果声明了PATTERN,只显示名称匹配PATTERN的域。 列出所有可用域。 1 gaussdb=# \dD \det[+] [PATTERN] 列出所有的外部表。当search_path中不同模式存在同名对象时,只显示search_path中位置靠前模式下的同名对象。 如果声明了PATTERN,只显示名称匹配PATTERN的表。 列出所有的外部表。 1 gaussdb=# \det \des[+] [PATTERN] 列出所有的外部服务器。 如果声明了PATTERN,只显示名称匹配PATTERN的服务器。 列出所有的外部服务器。 1 gaussdb=# \des \deu[+] [PATTERN] 列出用户映射信息。 如果声明了PATTERN,只显示名称匹配PATTERN的信息。 列出用户映射信息。 1 gaussdb=# \deu \dew[+] [PATTERN] 列出封装的外部数据。 如果声明了PATTERN,只显示名称匹配PATTERN的数据。 列出封装的外部数据。 1 gaussdb=# \dew \df[antw][S+] [PATTERN] 列出所有可用函数,以及它们的参数和返回的数据类型。a代表聚集函数,n代表普通函数,t代表触发器,w代表窗口函数。当search_path中不同模式存在同名对象时,只显示search_path中位置靠前模式下的同名对象。 如果声明了PATTERN,只显示名称匹配PATTERN的函数。 列出所有可用函数,以及它们的参数和返回的数据类型。 1 gaussdb=# \df \dF[+] [PATTERN] 列出所有的文本搜索配置信息。当search_path中不同模式存在同名对象时,只显示search_path中位置靠前模式下的同名对象。 如果声明了PATTERN,只显示名称匹配PATTERN的配置信息。 列出所有的文本搜索配置信息。 1 gaussdb=# \dF+ \dFd[+] [PATTERN] 列出所有的文本搜索字典。当search_path中不同模式存在同名对象时,只显示search_path中位置靠前模式下的同名对象。 如果声明了PATTERN,只显示名称匹配PATTERN的字典。 列出所有的文本搜索字典。 1 gaussdb=# \dFd \dFp[+] [PATTERN] 列出所有的文本搜索分析器。当search_path中不同模式存在同名对象时,只显示search_path中位置靠前模式下的同名对象。 如果声明了PATTERN,只显示名称匹配PATTERN的分析器。 列出所有的文本搜索分析器。 1 gaussdb=# \dFp \dFt[+] [PATTERN] 列出所有的文本搜索模板。当search_path中不同模式存在同名对象时,只显示search_path中位置靠前模式下的同名对象。 如果声明了PATTERN,只显示名称匹配PATTERN的模板。 列出所有的文本搜索模板。 1 gaussdb=# \dFt \dg[+] [PATTERN] 列出所有数据库角色。 说明: 因为用户和群组的概念被统一为角色,所以这个命令等价于\du。为了和以前兼容,所以保留两个命令。 如果指定了PATTERN,只显示名称匹配PATTERN的角色。 列出名称为“j?e”所有数据库角色(“?”表示任一字符)。 1 gaussdb=# \dg j?e \dl \lo_list的别名,显示一个大对象的列表。 - 列出所有的大对象。 1 gaussdb=# \dl \dL[S+] [PATTERN] 列出可用的程序语言。 如果指定了PATTERN,只列出名称匹配PATTERN的语言。 列出可用的程序语言。 1 gaussdb=# \dL \dm[S+] [PATTERN] 列出物化视图。当search_path中不同模式存在同名对象时,只显示search_path中位置靠前模式下的同名对象。 如果指定了PATTERN,只列出名称匹配PATTERN的物化视图。 列出物化视图。 1 gaussdb=# \dm \dn[S+] [PATTERN] 列出所有模式(名称空间)。如果向命令追加+,会列出每个模式相关的权限及描述。 如果声明了PATTERN,只列出名称匹配PATTERN的模式名。缺省时,只列出用户创建的模式。 列出所有名称以d开头的模式以及相关信息。 1 gaussdb=# \dn+ d* \do[S] [PATTERN] 列出所有可用的操作符,以及它们的操作数和返回的数据类型。当search_path中不同模式存在同名对象时,只显示search_path中位置靠前模式下的同名对象。 如果声明了PATTERN,只列出名称匹配PATTERN的操作符。缺省时,只列出用户创建的操作符。 列出所有可用的操作符,以及它们的操作数和返回的数据类型。 1 gaussdb=# \do \dO[S+] [PATTERN] 列出排序规则。当search_path中不同模式存在同名对象时,只显示search_path中位置靠前模式下的同名对象。 如果声明了PATTERN,只列出名称匹配PATTERN的规则。缺省时,只列出用户创建的规则。 列出排序规则。 1 gaussdb=# \dO \dp [PATTERN] 列出一列可用的表、视图以及相关的权限信息。当search_path中不同模式存在同名对象时,只显示search_path中位置靠前模式下的同名对象。 \dp显示结果如下: rolename=xxxx/yyyy --赋予一个角色的权限 =xxxx/yyyy --赋予public的权限 xxxx表示赋予的权限,yyyy表示授予这个权限的角色。权限的参数说明请参见表5。 如果指定了PATTERN,只列出名称匹配PATTERN的表、视图。 列出一列可用的表、视图以及相关的权限信息。 1 gaussdb=# \dp \drds [PATTERN1 [PATTERN2]] 列出所有修改过的配置参数。这些设置可以是针对角色的、针对数据库的或者同时针对两者的。PATTERN1和PATTERN2表示要列出的角色PATTERN和数据库PATTERN。 如果声明了PATTERN,只列出名称匹配PATTERN的规则。缺省或指定*时,则会列出所有设置。 列出数据库所有修改过的配置参数。 1 gaussdb=# \drds * dbname \dT[S+] [PATTERN] 列出所有的数据类型。当search_path中不同模式存在同名对象时,只显示search_path中位置靠前模式下的同名对象。 如果指定了PATTERN,只列出名称匹配PATTERN的类型。 列出所有的数据类型。 1 gaussdb=# \dT \du[+] [PATTERN] 列出所有数据库角色。 说明: 因为用户和群组的概念被统一为角色,所以这个命令等价于\dg。为了和以前兼容,所以保留两个命令。 如果指定了PATTERN,则只列出名称匹配PATTERN的角色。 列出所有数据库角色。 1 gaussdb=# \du \dE[S+] [PATTERN] \di[S+] [PATTERN] \ds[S+] [PATTERN] \dt[S+] [PATTERN] \dv[S+] [PATTERN] 这一组命令,字母E,i,s,t和v分别代表着外部表,索引,序列,表和视图。可以以任意顺序指定其中一个或者它们的组合来列出这些对象。当search_path中不同模式存在同名对象时,只显示search_path中位置靠前模式下的同名对象。例如:\dit列出所有的索引和表。在命令名称后面追加+,则每一个对象的物理尺寸以及相关的描述也会被列出。 如果指定了PATTERN,只列出名称匹配该PATTERN的对象。默认情况下只会显示用户创建的对象。通过PATTERN或者S修饰符可以把系统对象包括在内。 列出所有的索引和视图。 1 gaussdb=# \div \dx[+] [PATTERN] 列出安装数据库的扩展信息。 如果指定了PATTERN,则只列出名称匹配PATTERN的扩展信息。 列出安装数据库的扩展信息。 1 gaussdb=# \dx \l[+] 列出服务器上所有数据库的名称、所有者、字符集编码以及使用权限。 - 列出服务器上所有数据库的名称、所有者、字符集编码以及使用权限。 1 gaussdb=# \l \sf[+] FUNCNAME 显示函数的定义。 说明: 对于带圆括号的函数名,需要在函数名两端添加双引号,并且在双引号后面加上参数类型列表。参数类型列表两端添加圆括号。 如果存在同名的函数,则会返回多个函数的定义。 - 假设存在函数function_a和函数名带圆括号的函数func()name,列出函数的定义。 123 gaussdb=# \sf function_agaussdb=# \sf "func()name"(argtype1, argtype2) \z [PATTERN] 列出数据库中所有表、视图和序列,以及它们相关的访问特权。 如果给出任何pattern ,则被当成一个正则表达式,只显示匹配的表、视图、序列。 列出数据库中所有表、视图和序列,以及它们相关的访问特权。 1 gaussdb=# \z 表5 权限的参数说明 参数 参数说明 r SELECT:允许对指定的表、视图读取数据。 w UPDATE:允许对指定表更新字段。 a INSERT:允许对指定表插入数据。 d DELETE:允许删除指定表中的数据。 D TRUNCATE:允许清理指定表中的数据。 x REFEREN CES :允许创建外键约束。 t TRIGGER:允许在指定表上创建触发器。 X EXECUTE:允许使用指定的函数,以及利用这些函数实现的操作符。 U USAGE: 对于过程语言,允许用户在创建函数时,指定过程语言。 对于模式,允许访问包含在指定模式中的对象。 对于序列,允许使用nextval函数。 C CREATE: 对于数据库,允许在该数据库里创建新的模式。 对于模式,允许在该模式中创建新的对象。 对于表空间,允许在其中创建表,以及允许创建数据库和模式的时候把该表空间指定为其缺省表空间。 c CONNECT:允许用户连接到指定的数据库。 T TEMPORARY:允许创建临时表。 A ALTER:允许用户修改指定对象的属性。 P DROP:允许用户删除指定的对象。 m COMMENT:允许用户定义或修改指定对象的注释。 i INDEX:允许用户在指定表上创建索引。 v VACUUM:允许用户对指定的表执行ANALYZE和VACUUM操作。 * 给前面权限的授权选项。 表6 格式化元命令 参数 参数说明 \a 对齐模式和非对齐模式之间的切换。 \C [STRING] 把正在打印的表的标题设置为一个查询的结果或者取消这样的设置。 \f [STRING] 对于不对齐的查询输出,显示或者设置域分隔符。 \H 若当前模式为文本格式,则切换为HTML输出格式。 若当前模式为HTML格式,则切换回文本格式。 \pset NAME [VALUE] 设置影响查询结果表输出的选项。NAME的取值见表7。 \t [on|off] 切换输出的字段名的信息和行计数脚注。 \T [STRING] 指定在使用HTML输出格式时放在table标签里的属性。如果参数为空,不设置。 \x [on|off|auto] 切换扩展行格式。 表7 可调节的打印选项 选项 选项说明 取值范围 border value必须是一个数字。通常这个数字越大,表的边界就越宽线就越多,但是这个取决于特定的格式。 在HTML格式下,取值范围为大于0的整数。 在其他格式下,取值范围: 0:无边框 1:内部分隔线 2:台架 expanded (或x) 在正常和扩展格式之间切换。 当打开扩展格式时,查询结果用两列显示,字段名称在左、数据在右。这个模式在数据无法放进通常的“水平”模式的屏幕时很有用。 在正常格式下,当查询输出的格式比屏幕宽时,用扩展格式。正常格式只对aligned和wrapped格式有用。 fieldsep 声明域分隔符来实现非对齐输出。这样就可以创建其他程序希望的制表符或逗号分隔的输出。要设置制表符域分隔符,键入\pset fieldsep '\t'。缺省域分隔符是 '|' (竖条符)。 - fieldsep_zero 声明域分隔符来实现非对齐输出到零字节。 - footer 用来切换脚注。 - format 设置输出格式。允许使用唯一缩写(这意味着一个字母就够了)。 取值范围: unaligned:写一行的所有列在一条直线上中,当前活动字段分隔符分隔。 aligned:此格式是标准的,可读性好的文本输出。 wrapped:类似aligned,但是包装跨行的宽数据值,使其适应目标字段的宽度输出。 html:把表输出为可用于文档里的对应标记语言。输出不是完整的文档。 latex:把表输出为可用于文档里的对应标记语言。输出不是完整的文档。 troff-ms:把表输出为可用于文档里的对应标记语言。输出不是完整的文档。 null 打印一个字符串,用来代替一个null值。 缺省是什么都不打印,这样很容易和空字符串混淆。 numericlocale 切换分隔小数点左边的数值的区域相关的分组符号。 on:显示指定的分隔符。 off:不显示分隔符。 忽略此参数,显示默认的分隔符。 pager 控制查询和gsql帮助输出的分页器。如果设置了环境变量PAGER,输出将被指向到指定程序,否则使用系统缺省。 on:当输出到终端且不适合屏幕显示时,使用分页器。 off:不使用分页器。 always:当输出到终端无论是否符合屏幕显示时,都使用分页器。 recordsep 声明在非对齐输出格式时的记录分隔符。 - recordsep_zero 声明在非对齐输出到零字节时的记录分隔符。 - tableattr(或T) 声明放在html输出格式中HTML table标签的属性(例如:cellpadding或bgcolor)。注意:这里可能不需要声明border,因为已经在\pset border里用过了。如果没有给出value,则不设置表的属性。 - title 为随后打印的表设置标题。这个可以用于给输出一个描述性标签。如果没有给出value,不设置标题。 - tuples_only (或者t) 在完全显示和只显示实际的表数据之间切换。完全显示将输出像列头、标题、各种脚注等信息。在tuples_only模式下,只显示实际的表数据。 - feedback 切换是否输出结果行数 - 表8 连接元命令 参数 参数说明 取值范围 \c[onnect] [DBNAME|- USER|- HOST|- PORT|-] 连接到一个新的数据库。当数据库名称长度超过63个字节时,默认前63个字节有效,连接到前63个字节对应的数据库,但是gsql的命令提示符中显示的数据库对象名仍为截断前的名称。 说明: 重新建立连接时,如果切换数据库登录用户,将可能会出现交互式输入,要求输入新用户的连接密码。该密码最长长度为999字节,受限于GUC参数password_max_length的最大值。 - \encoding [ENCODING] 设置客户端字符编码格式。 不带参数时,显示当前的编码格式。 \conninfo 输出当前连接的数据库的信息。 - 表9 操作系统元命令 参数 参数说明 取值范围 \cd [DIR] 切换当前的工作目录。 绝对路径或相对路径,且满足操作系统路径命名规则。 \setenv NAME [VALUE] 设置环境变量NAME为VALUE,如果没有给出VALUE值,则不设置环境变量。 - \timing [on|off] 以毫秒为单位显示每条SQL语句的执行时间(不包括屏显打印时间)。 on表示打开显示。 off表示关闭显示。 \! [COMMAND] 返回到一个单独的Unix shell或者执行Unix命令COMMAND。 - 表10 变量元命令 参数 参数说明 \prompt [TEXT] NAME 提示用户用文本格式来指定变量名称。 \set [NAME [VALUE]] 设置内部变量NAME为VALUE或者如果给出了多于一个值,设置为所有这些值的连接结果。如果没有给出第二个参数,只设变量不设值。 有一些常用变量被gsql特殊对待,它们是一些选项设置,通常所有特殊对待的变量都是由大写字母组成(可能还有数字和下划线)。 表11是一个所有特殊对待的变量列表。 \unset NAME 不设置(或删除)gsql变量名。 表11 \set常用命令 名称 命令说明 取值范围 \set VERBOSITY value 这个选项可以设置为值default,verbose,terse之一以控制错误报告的冗余行。 value取值范围:default, verbose,terse \set ON_ERROR_STOP value 如果设置了这个变量,脚本处理将马上停止。如果该脚本是从另外一个脚本调用的,该脚本也会按同样的方式停止。如果最外层的脚本不是从一次交互的gsql会话中调用的而是用-f选项调用的,gsql将返回错误代码3,以示这个情况与致命错误条件的区别(错误代码为1)。 value取值范围为:on/off,true/false,yes/no,1/0 \set AUTOCOMMIT [on|off] 设置当前gsql连接的自动提交行为,on为打开自动提交,off为关闭自动提交。默认情况下,gsql连接处于自动提交模式,每个单独的语句都被隐式提交。如果基于性能或者其它方面考虑,需要关闭自动提交时,需要用户自己显式发出COMMIT命令来保证事务的提交。例如,在指定的业务SQL执行完之后发送COMMIT语句显式提交,特别是gsql客户端退出之前务必保证所有的事务已经提交。 说明: gsql默认使用自动提交模式,若关闭自动提交,将会导致后面执行的语句都受到隐式事务包裹,数据库中不支持在事务中执行的语句不能在此模式下执行。 on表示打开自动提交。 off表示关闭自动提交。 表12 大对象元命令 参数 参数说明 \lo_list 显示一个目前存储在该数据库里的所有GaussDB大对象和提供给大对象的注释。 表13 全密态元命令 参数 参数说明 \send_token 全密态功能,传输密钥到服务端缓存,只在开启内存解密逃生通道的情况下使用。 \st 全密态功能,传输密钥到服务端缓存,只在开启内存解密逃生通道的情况下使用。 \clear_token 全密态功能,销毁服务端缓存的密钥,只在开启内存解密逃生通道的情况下使用。 \ct 全密态功能,销毁服务端缓存的密钥,只在开启内存解密逃生通道的情况下使用。 \key_info KEY_INFO 在全密态数据库特性中,用于设置访问外部密钥管理者的参数。 M-Compatibility暂不支持全密态数据库。
  • 注意事项 一个gsql元命令的格式是反斜杠后面紧跟一个动词,然后是任意参数。参数命令动词和其他参数以任意个空白字符间隔。 要在参数里面包含空白,必须用单引号把它引起来。要在这样的参数里包含单引号,可以在前面加一个反斜杠。任何包含在单引号里的内容都会被进一步进行类似C语言的替换:\n(新行)、\t(制表符)、\b(退格)、\r(回车)、\f(换页)、\digits(八进制表示的字符)、\xdigits(十六进制表示的字符)。 用""包围的内容被当做一个命令行传入shell。该命令的输出(删除了结尾的新行)被当做参数值。 如果不带引号的参数以冒号(:)开头,它会被当做一个gsql变量,并且该变量的值最终会成为真正的参数值。 有些命令以一个SQL标识的名称(比如一个表)为参数。这些参数遵循SQL语法关于双引号的规则:不带双引号的标识强制转换成小写,而双引号保护字母不进行大小写转换,并且允许在标识符中使用空白。在双引号中,成对的双引号在结果名称中分析成一个双引号。比如,FOO"BAR"BAZ解析成fooBARbaz;而"Aweird""name"解析成A weird"name。 对参数的分析在遇到另一个不带引号的反斜杠时停止。这里会认为是一个新的元命令的开始。特殊的双反斜杠序列(\\)标识参数的结尾并将继续分析后面的SQL语句(如果存在)。这样SQL和gsql命令可以在一行里面混合使用。但是在任何情况下,一条元命令的参数不能延续超过行尾。 M-Compatibility模式数据库不支持\h元命令。
  • 环境变量 表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。
  • 其他故障 出现因“总线错误”(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模式。这时需要修改gs_hba.conf里的连接认证信息。请联系管理员处理。 请不要修改gs_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。 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的gs_hba.conf里配置了当前客户端IP使用"gss"方式来做认证,该认证算法不支持用作客户端的身份认证,请修改到"sha256"后再试。具体操作请联系管理员处理。 请不要修改gs_hba.conf中数据库主机的相关设置,否则可能导致数据库功能故障。 建议业务应用部署在数据库之外,而非数据库内部。
共100000条
提示

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