华为云用户手册

  • 请求消息 表2 请求Header参数 参数 是否必选 参数类型 描述 Content-Type 是 String 消息体的类型(格式),默认取值为“application/json;charset=utf8”。 X-Auth-Token 是 String 调用接口的认证方式分为Token和AK/SK两种,如果您使用的Token方式,此参数为必填,请填写Token的值。Token获取方式,请参考获取用户Token。
  • 请求消息 表2 请求Header参数 参数 是否必选 参数类型 描述 Content-Type 是 String 消息体的类型(格式),默认取值为“application/json;charset=utf8”。 X-Auth-Token 是 String 调用接口的认证方式分为Token和AK/SK两种,如果您使用的Token方式,此参数为必填,请填写Token的值。Token获取方式,请参考获取用户Token。
  • 方案架构 该解决方案基于Flexus云服务器X实例帮助您快速搭建公网IP不变业务迁移系统。 图1 方案架构图 该解决方案将会部署如下资源: 客户源端 创建两台Flexus云服务器X实例,并部署Nginx、Keepalived应用,实现主备切换。 创建两个弹性公网IP EIP并绑定到云服务器,用于提供访问公网和被公网访问能力。 目的端 创建两台Flexus云服务器X实例,模拟业务。 创建两个弹性公网IP EIP并绑定到云服务器,用于提供访问公网和被公网访问能力。
  • 资源和成本规划 该解决方案主要部署如下资源,以下费用仅供参考,具体请参考华为云官网价格详情,实际收费以账单为准。 表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费用
  • 快速部署 本章节主要帮助用户快速部署“公网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
  • 创建rf_admin_trust委托(可选) 进入华为云官网,打开控制台管理界面,鼠标移动至个人账号处,打开“ 统一身份认证 ”菜单。 图1 控制台管理界面 图2 统一身份认证菜单 进入“委托”菜单,搜索“rf_admin_trust”委托。 图3 委托列表 如果委托存在,则不用执行接下来的创建委托的步骤 如果委托不存在,则需执行以下步骤创建委托 单击步骤2界面中的“创建委托”按钮,在委托名称中输入“rf_admin_trust”,委托类型选择“云服务”,选择“ RFS ”,单击“下一步”。 图4 创建委托 在搜索框中输入“Tenant Administrator”权限,并勾选搜索结果,单击“下一步”。 图5 选择策略 选择“所有资源”,并单击“下一步”完成配置。 图6 设置授权范围 “委托”列表中出现“rf_admin_trust”委托则创建成功。 图7 委托列表
  • 客户源端配置(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
  • 名词解释 华为云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。
  • 创建连接故障 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中数据库主机的相关设置,否则可能导致数据库功能故障。 建议业务应用部署在数据库之外,而非数据库内部。
  • 其他故障 出现因“总线错误”(Bus error)导致的core dump或异常退出。 一般情况下出现此种问题,是进程运行过程中加载的共享动态库(在Linux为.so文件)出现变化;或者进程二进制文件本身出现变化,导致操作系统加载机器的执行码或者加载依赖库的入口发生变化,操作系统出于保护目的将进程终止,产生core dump文件。 解决此问题,请重试。同时请尽可能避免在升级等运维操作过程中,在数据库内部运行业务程序,避免升级时因替换文件产生此问题。 此故障的core dump文件的可能堆栈是dl_main及其子调用,它是操作系统用来初始化进程做共享动态库加载的。如果进程已经初始化,但是共享动态库还未加载完成,严格意义上来说,进程并未完全启动。
  • 操作步骤 使用gsql连接到GaussDB服务器。 gsql工具使用-d参数指定目标数据库名、-U参数指定数据库用户名、-h参数指定主机名、-p参数指定端口号信息。 若未指定数据库名称,则使用初始化时默认生成的数据库名称;若未指定数据库用户名,则默认使用当前操作系统用户作为数据库用户名;当某个值没有前面的参数(-d、-U等)时,若连接的命令中没有指定数据库名(-d)则该参数会被解释成数据库名;如果已经指定数据库名(-d)而没有指定数据库用户名(-U)时,该参数则会被解释成数据库用户名。 示例1,使用omm用户连接到postgres数据库的8000端口。 gsql -d postgres -p 8000 示例2,使用jack用户连接到远程主机postgres数据库的8000端口。 gsql -h 10.180.123.163 -d postgres -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 postgres -U jack -p 8000 示例3,参数postgres和omm不属于任何选项时,分别被解释成了数据库名和用户名。 gsql postgres omm -p 8000 等效于 gsql -d postgres -U omm -p 8000 详细的gsql参数请参见命令参考。 执行SQL语句。 以创建数据库human_staff为例。 12 gaussdb=# 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参数请参见表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,则该选项无效。 - -y, --slash-command 将当前语句终结并发送到内核执行或者重新执行已经执行过的语句(不包括gsql元命令)。 说明: 该功能仅支持A兼容模式数据库,而且不支持-c, --command参数的使用场景。 A兼容模式数据库下默认普通语句分隔符为;,PL/SQL为/,使用该参数时不支持更换分隔符。 - -?, --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参数连接本地数据库或者连接远程数据库时,可通过该选项打开密态数据库开关,此开关为密态等值查询基本能力开关。 - -C3,--enable-client-encryption=3 当使用-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参数一起使用。 - 表4 连接参数 参数 参数说明 取值范围 -h, --host=HOSTNAME 指定正在运行服务器的主机名、Unix域套接字的路径、或者 域名 。接受以“,”分割的字符串来指定多个主机地址,支持指定多个主机地址,支持指定IPv6主机地址。 当指定多个主机地址时,默认情况下会自动选择主节点地址进行连接。可通过设置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
  • 说明 如果某数据库有任何本地数据要添加到template1数据库,请谨慎将gs_dump的输出恢复到一个真正的空数据库中,否则可能会因为被添加对象的定义被复制,出现错误。要创建一个无本地添加的空数据库,需从template0而非template1复制,例如: CREATE DATABASE foo WITH TEMPLATE template0; tar归档形式的文件大小不得超过8GB(tar文件格式的固有限制)。tar文档整体大小和任何其他输出格式没有限制,操作系统可能对此有要求。 由gs_dump生成的转储文件不包含优化程序用来做执行计划决定的统计数据。因此,建议从某转储文件恢复之后运行ANALYZE以确保最佳效果。转储文件不包含任何ALTER DATABASE…SET命令,这些设置由gs_dumpall转储,还有数据库用户和其他完成安装设置。
  • 语法 gs_dump [OPTION]... [DBNAME] “dbname”前面不需要加短或长选项。“dbname”指定要连接的数据库。 例如: 不需要-d,直接指定“dbname”。 gs_dump -p port_number testdb -f dump1.sql 或者 export PGDATABASE=testdb gs_dump -p port_number -f dump1.sql 环境变量:PGDATABASE
  • 示例 使用gs_dump转储数据库为SQL文本文件或其它格式的操作,如下所示。 示例中“backup/MPPDB_backup.sql”表示导出的文件,其中backup表示相对于当前目录的相对目录;“37300”表示数据库服务器端口;“testdb”表示要访问的数据库名。 导出操作时,请确保该目录存在并且当前的操作系统用户对其具有读写权限。 示例1:执行gs_dump,导出testdb数据库全量信息,导出的MPPDB_backup.sql文件格式为纯文本格式。 gs_dump -U omm -f backup/MPPDB_backup.sql -p 37300 testdb -F pgs_dump[user='omm'][localhost][port='37300'][testdb][2018-06-27 09:49:17]: The total objects number is 356.gs_dump[user='omm'][localhost][port='37300'][testdb][2018-06-27 09:49:17]: [100.00%] 356 objects have been dumped.gs_dump[user='omm'][localhost][port='37300'][testdb][2018-06-27 09:49:17]: dump database testdb successfullygs_dump[user='omm'][localhost][port='37300'][testdb][2018-06-27 09:49:17]: total time: 1274 ms 使用gsql程序从纯文本导出文件中导入数据。 示例2:执行gs_dump,导出testdb数据库全量信息,导出的MPPDB_backup.tar文件格式为tar格式。 gs_dump -U omm -f backup/MPPDB_backup.tar -p 37300 testdb -F tgs_dump[user='omm'][localhost][port='37300'][testdb][2018-06-27 10:02:24]: The total objects number is 1369.gs_dump[user='omm'][localhost][port='37300'][testdb][2018-06-27 10:02:53]: [100.00%] 1369 objects have been dumped.gs_dump[user='omm'][localhost][port='37300'][testdb][2018-06-27 10:02:53]: dump database testdb successfullygs_dump[user='omm'][localhost][port='37300'][testdb][2018-06-27 10:02:53]: total time: 50086 ms 示例3:执行gs_dump,导出testdb数据库全量信息,导出的MPPDB_backup.dmp文件格式为自定义归档格式。 gs_dump -U omm -f backup/MPPDB_backup.dmp -p 37300 testdb -F cgs_dump[user='omm'][localhost][port='37300'][testdb][2018-06-27 10:05:40]: The total objects number is 1369.gs_dump[user='omm'][localhost][port='37300'][testdb][2018-06-27 10:06:03]: [100.00%] 1369 objects have been dumped.gs_dump[user='omm'][localhost][port='37300'][testdb][2018-06-27 10:06:03]: dump database testdb successfullygs_dump[user='omm'][localhost][port='37300'][testdb][2018-06-27 10:06:03]: total time: 36620 ms 示例4:执行gs_dump,导出testdb数据库全量信息,导出的MPPDB_backup文件格式为目录格式。 gs_dump -U omm -f backup/MPPDB_backup -p 37300 testdb -F dgs_dump[user='omm'][localhost][port='37300'][testdb][2018-06-27 10:16:04]: The total objects number is 1369.gs_dump[user='omm'][localhost][port='37300'][testdb][2018-06-27 10:16:23]: [100.00%] 1369 objects have been dumped.gs_dump[user='omm'][localhost][port='37300'][testdb][2018-06-27 10:16:23]: dump database testdb successfullygs_dump[user='omm'][localhost][port='37300'][testdb][2018-06-27 10:16:23]: total time: 33977 ms
  • 问题排查 可能原因:管理员授予 IAM 用户所在用户组的权限不正确。 解决方法:管理员确认并修改授予IAM用户所在用户组的权限,方法请参考:修改用户组权限,权限详情请参考:系统权限。 可能原因:管理员授予的权限已拒绝相关操作的授权项。 解决方法:管理员查看已授予IAM用户的系统权限详情,确认已授予的权限是否有拒绝操作的语句,方法请参考策略语法。如系统权限无法满足您的场景需要,管理员可以创建自定义策略,允许该操作对应的授权项,方法请参考:创建自定义策略。 可能原因:管理员给用户组授予权限后,忘记将IAM用户添加至用户组中。 解决方法:管理员将IAM用户添加至用户组中,方法请参见:用户组添加用户。 可能原因:对于区域级服务,管理员没有在对应的区域进行授权。 解决方法:管理员在对IAM所在用户组授权时,选择对应的区域。如果管理员授予用户默认区域项目的权限,用户只能访问该默认项目中的资源,不拥有该默认项目下IAM子项目的权限,建议您授予IAM用户最小区域权限,方法请参见:给用户组授权。 可能原因:对于区域级服务,IAM用户登录控制台后,没有切换到授权区域。 解决方法:IAM用户访问区域级服务时,请切换至授权区域,方法请参见:切换区域。 可能原因:管理员授予的OBS权限由于系统设计的原因,授权后需等待15-30分钟才可生效。 解决方法:请IAM用户和管理员等待15-30分钟后重试。 可能原因:您所属账号已欠费,无法使用该资源。 解决方法:请管理员在“费用中心”确认账单并充值,方法请参见:账户充值。 可能原因:浏览器缓存导致权限信息未更新。 解决方法:请清理浏览器缓存后重试。 可能原因:该服务可能提供独立权限控制,如软件开发生产线 CodeArts、 对象存储服务 OBS。 解决方法:请查看对应服务帮助文档,并授予用户对应权限。如CodeArts各角色的权限是怎样的、OBS权限控制概述。 可能原因:管理员同时在IAM和企业管理给用户授权,基于企业项目管理权限可能不生效。IAM鉴权优先于企业管理,如IAM用户同时拥有所有资源的ECS ReadOnlyAccess、企业项目A的ECS ReadOnlyAccess权限,用户可以查看所有ECS资源。 解决方法:请管理员根据情况在IAM控制台修改用户权限。
  • Internet Explorer浏览器下输入框提示信息无法自动消失怎么办 当用户进行登录、注册、绑定华为账号、创建用户、找回密码、修改密码等操作时,由于当前输入框不能完全支持Internet Explorer 8及以下版本的浏览器,所以出现输入框提示信息(如“最短不能少于5个字符”等提示信息)无法自动消失的情况,可以参照以下方法进行操作。 图1 提示信息无法消失 升级浏览器版本 将Internet Explorer浏览器升级到IE9及以上版本再进行操作。 更换浏览器 使用Firefox浏览器(38.0及以上版本)或Google Chrome浏览器(43.0及以上版本)进行操作。 父主题: 其他问题
  • 操作步骤 进入 API Explorer 平台获取IAM用户Token接口。 选择Region,编辑获取用户Token接口的请求参数,进行具体的API调用。 Region 在Region下拉列表选取您需要访问的区域。 Params nocatalog为非必填,如果设置该参数,返回的响应体中将不显示catalog信息。任何非空字符串都将解释为true,并使该字段生效。 Body 通过切换输入方式可以选择表单填写或文本输入请求体。 表单填写:通过表单填写完成请求体,无需了解JSON语法,参考示例填写参数值。 文本输入:通过文本输入完成请求体,可以直接在编辑框内编写JSON格式的请求体。 { "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "domain": { "name": "IAM用户所属账号名" }, "name": "IAM用户名", "password": "IAM用户的登录密码" } } }, "scope": { "domain": { "name": "IAM用户所属账号名" } } }} 参数说明请参见:请求参数。 如果是第三方系统用户,没有在本系统设置登录密码,可以通过系统登录页面的找回密码功能设置登录密码,并在password中输入新设置的密码。 单击调试,发送API请求。 在返回的响应体中查看获取的用户Token,用户调用IAM其他API接口时,可以使用该Token进行鉴权。 Token的有效期为24小时,需要使用一个Token鉴权时,可以先缓存起来,避免频繁调用。 如果返回错误码,例如401,表示认证失败,请确认Request Body中请求参数填写正确后重新发送请求。
  • 问题排查 系统提示“用户名或密码错误” 可能原因:IAM用户登录时,未切换IAM登录入口。 解决方法:单击“IAM用户”,切换登录入口。 可能原因:租户名/原华为云账号名和IAM用户名输入错误。 解决方法:输入正确的租户名/原华为云账号名和IAM用户名。如果您不知道IAM用户名和所属账号,请联系管理员。 可能原因:密码输入错误。 解决方法:输入正确的密码,如确认字母大小写等。如果您忘记密码,请参考以下方法找回:忘记密码怎么办。 可能原因:修改过期密码或找回密码后,浏览器缓存信息未刷新。 解决方法:请清理浏览器缓存后,重新登录。 系统提示“您的管理员已设置了控制台ACL规则,禁止您所在的终端登录控制台” 可能原因:管理员在IAM控制台设置了访问控制规则,不允许您所在的IP地址区间、IP地址或网段、VPC Endpoint访问华为云。 解决方法:请联系管理员查看控制台ACL规则,从允许访问的设备登录华为云或由管理员修改访问控制规则。详情请参考:访问控制。
  • 操作步骤 当前验证方式为“操作员验证” A公司管理员进入华为云“控制台”。 图1 进入控制台 在“控制台”页面,鼠标移动至右上方的用户名,在下拉列表中选择“安全设置”。 在“安全设置”页面中,选择“敏感操作”页签,单击操作保护右侧的“立即修改”。 图2 修改操作保护 在右侧弹出的“操作保护设置”页面中,选择“指定人员验证”,输入验证手机号/邮件地址、验证码。 图3 操作保护设置 单击“确定”,修改验证方式为指定人员验证。 当前验证方式为“指定人员验证” A公司管理员进入华为云“控制台”。 图4 进入控制台 在“控制台”页面,鼠标移动至右上方的用户名,在下拉列表中选择“安全设置”。 在“安全设置”页面中,选择“敏感操作”页签,单击操作保护右侧的“立即修改”。 图5 修改操作保护 在右侧弹出的“操作保护设置”页面中,选择“关闭”,单击“确定”并进行身份验证,关闭操作保护。 在“安全设置”页面,“敏感操作”页签中,单击操作保护右侧的“立即启用”。 在右侧弹窗中选择“开启”,勾选“操作员验证”或“指定人员验证”。 如选择“指定人员验证”,开启操作保护时,需要进行初次身份核验,确保指定人员验证方式可用。 操作员验证:触发敏感操作的账号或IAM用户进行二次验证。 指定人员验证:账号及IAM用户触发的敏感操作均由指定人员进行验证。支持手机号、邮件地址,不支持虚拟MFA验证。 单击“确定”,修改操作保护验证方式。
共100000条
提示

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