云服务器内容精选

  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 账号的token Content-Type 是 String MIME类型 表3 请求Body参数 参数 是否必选 参数类型 描述 change_security_group 是 ChangeSecurityGroup object change_security_group对象 表4 ChangeSecurityGroup 参数 是否必选 参数类型 描述 security_group_id 是 String 需要修改的目标安全组ID。
  • 解决办法 系统连接超过最大连接数量。 用户可在 GaussDB (DWS) 控制台设置最大连接数max_connections。 max_connections设置方法如下: 登录GaussDB(DWS) 管理控制台。 在左侧导航栏中,单击“集群管理”。 在集群列表中找到所需要的集群,单击集群名称,进入集群“基本信息”页面。 单击“参数修改”页签,修改参数“max_connections”的值,然后单击“保存”。 在“修改预览”窗口,确认修改无误后,单击“保存”。 关于查看用户会话连接数的方法如表1。 表1 查看会话连接数 描述 命令 查看指定用户的会话连接数上限。 执行如下命令查看连接到指定用户user1的会话连接数上限。其中,-1表示没有对用户user1设置连接数的限制。 1 2 3 4 5 SELECT ROLNAME,ROLCONNLIMIT FROM PG_ROLES WHERE ROLNAME='user1'; rolname | rolconnlimit ---------+-------------- user1 | -1 (1 row) 查看指定用户已使用的会话连接数。 执行如下命令查看指定用户user1已使用的会话连接数。其中,1表示user1已使用的会话连接数。 1 2 3 4 5 6 SELECT COUNT(*) FROM V$SESSION WHERE USERNAME='user1'; count ------- 1 (1 row) 查看指定数据库的会话连接数上限。 执行如下命令查看连接到指定数据库db_demo的会话连接数上限。其中,-1表示没有对数据库db_demo设置连接数的限制。 1 2 3 4 5 6 SELECT DATNAME,DATCONNLIMIT FROM PG_DATABASE WHERE DATNAME='db_demo'; datname | datconnlimit ----------+-------------- db_demo | -1 (1 row) 查看指定数据库已使用的会话连接数。 执行如下命令查看指定数据库db_demo上已使用的会话连接数。其中,1表示数据库db_demo上已使用的会话连接数。 1 2 3 4 5 SELECT COUNT(*) FROM PG_STAT_ACTIVITY WHERE DATNAME='db_demo'; count ------- 1 (1 row) 查看所有用户已使用会话连接数。 执行如下命令查看所有用户已使用的会话连接数。 1 2 3 4 5 SELECT COUNT(*) FROM PG_STAT_ACTIVITY; count ------- 10 (1 row) 用户不具备访问该数据库的权限。 使用管理员用户dbadmin连接数据库。 1 gsql -d human_resource -h 10.168.0.74 -U dbadmin -p 8000 -W password -r 赋予user1用户访问数据库的权限。 1 GRANT CONNECT ON DATABASE human_resource TO user1; 实际上,常见的许多错误操作也可能产生用户无法连接上数据库的现象。例如,用户连接的数据库不存在,用户名或密码输入错误等。这些错误操作在客户端工具会有相应的提示信息。 1 2 3 4 5 gsql -d human_resource -p 8000 gsql: FATAL: database "human_resource" does not exist gsql -d human_resource -U user1 -W password -p 8000 gsql: FATAL: Invalid username/password,login denied. 网络连接故障。 请检查客户端与数据库服务器间的网络连接。如果发现从客户端无法PING到数据库服务器端,则说明网络连接出现故障。请联系技术支持工程师提供技术支持。 1 2 3 4 5 6 7 8 ping -c 4 10.10.10.1 PING 10.10.10.1 (10.10.10.1) 56(84) bytes of data. From 10.10.10.1: icmp_seq=2 Destination Host Unreachable From 10.10.10.1 icmp_seq=2 Destination Host Unreachable From 10.10.10.1 icmp_seq=3 Destination Host Unreachable From 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
  • 原因分析 系统连接数量超过了最大连接数量,会显示如下错误信息。 1 2 gsql -d human_resource -h 10.168.0.74 -U user1 -p 8000 -W password -r gsql: FATAL: sorry, too many clients already 用户不具备访问该数据库的权限,会显示如下错误信息。 1 2 3 gsql -d human_resource -h 10.168.0.74 -U user1 -p 8000 -W password -r gsql: FATAL: permission denied for database "human_resource" DETAIL: User does not have CONNECT privilege. 网络连接故障。
  • 响应参数 参数说明 表3 响应Body参数 参数 参数类型 是否必选 描述 total_count Integer 是 总记录数。 sessions Array of objects 是 具体信息。详情请参见表 QuerySessionResponse。 表4 session字段数据结构说明 参数 参数类型 描述 id String 会话ID。 active Boolean 当前会话是否活跃。取值为“true”,表示活跃。取值为“false”,表示不活跃。 operation String 操作。 type String 操作类型。 cost_time String 运行时间,单位为us。 plan_summary String 执行计划描述。 host String 主机。 client String 客户端地址。 description String 连接描述。 namespace String 命名空间。
  • 响应示例 { "total_count" : 1, "sessions" : [ { "id" : "shard_1:7201646", "active" : true, "operation" : "{\"getMore\":4.9473050217983027E18,\"collection\":\"$cmd.aggregate\",\"batchSize\":101.0,\"lsid\":{\"id\":{\"$binary\":{\"base64\":\"9FhcBFVeTzafCH8BUZrLjQ\\=\\=\",\"subType\":\"03\"}},\"uid\":{\"$binary\":{\"base64\":\"O0CMtIVItQN4IsEOsJdrPL8s7jv5xwh5a/A5Qfvs2A8\\=\",\"subType\":\"00\"}}},\"$clusterTime\":{\"clusterTime\":{\"$timestamp\":{\"t\":1.614047961E9,\"i\":1.0}},\"signature\":{\"hash\":{\"$binary\":{\"base64\":\"HxUWu68VyfvQFivWjHQDdJj/3YQ\\=\",\"subType\":\"00\"}},\"keyId\":6.9312672235666801E18}},\"$client\":{\"driver\":{\"name\":\"PyMongo\",\"version\":\"3.6.1\"},\"os\":{\"type\":\"Linux\",\"name\":\"Linux\",\"architecture\":\"x86_64\",\"version\":\"4.18.0-147.5.1.0.h269.eulerosv2r9.x86_64\"},\"platform\":\"CPython 3.7.4.final.0\",\"mongos\":{\"host\":\"host-172-16-61-110:8635\",\"client\":\"127.0.0.1:33420\",\"version\":\"4.0.3\"}},\"$configServerState\":{\"opTime\":{\"ts\":{\"$timestamp\":{\"t\":1.614047961E9,\"i\":1.0}},\"t\":2.0}},\"$db\":\"admin\"}", "type" : "getmore", "cost_time" : "25", "plan_summary" : "COLLSCAN", "host" : "host-172-16-27-182:8635", "client" : "172.16.41.233:50700", "description" : "conn20", "namespace" : "admin.$cmd.aggregate" } ] }
  • URI URI格式 GET https://{Endpoint}/v3/{project_id}/nodes/{node_id}/sessions URI样例 https://dds.cn-north-1.myhuaweicloud.com/v3/054e292c9880d4992f02c0196d3ea468/nodes/520c58ba00a3497e97ce0b9604874dd6no02/sessions
  • 请求参数 参数说明 表1 请求参数 名称 类型 IN 是否必选 描述 X-Auth-Token string header 是 从 IAM 服务获取的用户Token。请参考认证鉴权。 project_id string path 是 租户在某一Region下的项目ID。请参考获取项目ID章节获取项目编号。 node_id string path 是 节点ID。 集群实例支持选择mongos、shard、config中的任意节点。 副本集实例选择Primary或者Secondary节点。 表2 Query参数 参数 参数类型 是否必选 描述 offset Integer 否 索引位置,偏移量。从第一条数据偏移offset条数据后开始查询,默认为0(偏移0条数据,表示从第一条数据开始查询),必须为数字,不能为负数。 limit Integer 否 查询记录数。取值范围[1, 100],默认10(表示返回10条数据)。 plan_summary String 否 执行计划描述。取空值表示查询plan_summary为空的会话。也可指定执行计划,例如:COLLSCAN IXSCAN FETCH SORT LIMIT SKIP COUNT COUNT_SCAN TEXT PROJECTION type String 否 操作类型。取空值表示查询type为空的会话。也可指定操作类型,例如:none update insert query command getmore remove killcursors namespace String 否 命名空间。取空值表示查询namespace为空的会话,也可根据当前业务进行指定。 cost_time Integer 否 运行时间,单位为us。取空值表示查询cost_time为空的会话,也可根据当前业务需要进行配置,表示查询超出cost_time 的会话。
  • 准备工作 准备弹性云服务器或可访问云数据库RDS实例的设备。 通过内网地址连接云数据库RDS实例,需具备以下条件。 创建并登录弹性云服务器,请参见《弹性云服务器快速入门》中“购买弹性云服务器”和“登录弹性云服务器”。 该弹性云服务器与目标实例必须处于同一VPC内。 该弹性云服务器必须处于目标实例所属安全组允许访问的范围内。 通过公网地址连接云数据库RDS实例,需具备以下条件。 先对关系型数据库实例绑定公网地址,如何绑定公网地址,请参见绑定和解绑弹性公网IP。 保证本地设备可以访问云数据库RDS实例绑定的公网地址。 在1中的弹性云服务器或可访问云数据库RDS的设备上,安装pgAdmin客户端。
  • 请求示例 创建一个MySQL连接示例。 https://{endpoint}/v5/5237e10fe9aa4ad5b16b6a5245248314/connections { "name" : "DRS-mysql", "db_type" : "mysql", "description" : "description", "endpoint" : { "endpoint_name" : "mysql", "ip" : "127.0.0.1", "db_port" : "3306", "db_user" : "root", "db_password" : "password" }, "ssl" : { "ssl_link" : false }, "enterprise_project_id" : "0" }
  • 响应示例 状态码: 200 OK { "name" : "DRS-mysql", "type" : "mysql", "endpoint" : { "endpoint_name" : "mysql", "ip" : "127.0.0.1", "db_port" : "3306", "db_user" : "root" }, "description" : "description", "connection_id" : "835e1d79-24ac-411d-a1c8-22c000280659", "ssl" : { "ssl_link" : false }, "create_time" : 1716879012121, "enterprise_project_id" : "0" } 状态码: 400 Bad Request { "error_code" : "DRS.10010065", "error_msg" : "Connection manager name is already exists." }
  • 响应参数 状态码: 200 表9 响应Body参数 参数 参数类型 描述 connection_id String 连接ID。 name String 连接名称。 create_time Long 连接创建时间,格式为时间戳。 db_type String 连接类型。 config ConnectionConfig object 连接的配置项。 endpoint BaseEndpoint object 数据库基本信息。 vpc CloudVpcInfo object 数据库实例所在VPC,子网,安全组等信息。 ssl EndpointSslConfig object 数据库SSL证书信息。 表10 ConnectionConfig 参数 参数类型 描述 driver_name String 驱动程序名称。 表11 BaseEndpoint 参数 参数类型 描述 id String 数据库信息ID。 endpoint_name String 数据库场景类型。取值: oracle:云下自建Oracle数据库。 ecs_oracle:华为云E CS 自建Oracle数据库。 cloud_gaussdbv5:华为云数据库GaussDB分布式。 mysql:他云/本地自建MySQL数据库。 ecs_mysql:华为云ECS自建MySQL数据库。 cloud_mysql:华为云数据库RDS for MySQL。 redis:云下自建Redis数据。 ecs_redis:华为云ECS自建Redis数据。 rediscluster:云下自建Redis集群数据库。 ecs_rediscluster:华为云ECS自建Redis集群数据库。 cloud_gaussdb_redis:华为云数据库GeminiDB Redis。 postgresql: 云下自建PostgreSQL数据库。 ecs_postgresql: 华为云ECS自建PostgreSQL数据库。 cloud_postgresql: 华为云数据库RDS for PostgreSQL。 mongodb: 云下自建MongoDB数据库。 ecs_mongodb: 华为云ECS自建MongoDB数据库。 cloud_mongodb: 华为云文档数据库服务DDS。 ip String 数据库IP。约束:- 数据库为自建MongoDB时,数据库IP与端口之间用“:”英文冒号拼接,多个值之间请用“,”英文逗号隔开,最多支持填写3个IP地址或 域名 。- 数据库为DDS实例时,数据库IP与端口之间用“:”英文冒号拼接,多个IP端口之间请用“,”英文逗号分隔。- 数据库为Redis集群时,请填写源端Redis集群所有分片的IP地址和对应端口,数据库IP与端口之间用“:”英文冒号拼接,多个IP端口之间请用“,”英文逗号分隔,并且推荐填写集群分片的Slave节点的IP地址。最多支持填写32个IP地址或域名,多个值之间请用英文逗号隔开。示例:- MySQL:ip- MongoDB:ip:port,ip:port,ip:port- DDS:ip:port,ip:port - Redis集群:ip:port,ip:port db_port String 数据库端口。 约束:输入范围为1-65535之间的整数。 db_user String 数据库用户名。 db_password String 数据库密码。 instance_id String 华为云数据库实例ID。 instance_name String 华为云数据库实例名称。 db_name String 指定数据库名称。例如: oracle:serviceName.orcl。 source_sharding Array of BaseEndpoint objects 物理源库信息。 表12 CloudVpcInfo 参数 参数类型 描述 vpc_id String 数据库实例所在的虚拟私有云ID,获取方法如下: 方法1:登录虚拟私有云服务的控制台界面,在虚拟私有云的详情页面查找VPC ID。 方法2:通过虚拟私有云服务的API接口查询,具体操作可参考查询VPC列表。 subnet_id String 数据库实例所在子网ID,获取方法如下: 方法1:登录虚拟私有云服务的控制台界面,单击VPC下的子网,进入子网详情页面,查找网络ID。 方法2:通过虚拟私有云服务的API接口查询,具体操作可参考查询子网列表。 security_group_id String 数据库实例所在的安全组ID,获取方法如下: 方法1:登录虚拟私有云服务的控制台界面,在安全组的详情页面查找安全组ID。 方法2:通过虚拟私有云服务的API接口查询,具体操作可参考查询安全组列表。 表13 EndpointSslConfig 参数 参数类型 描述 ssl_link Boolean 是否SSL安全连接。如果数据库启用了SSL安全连接,参数值为true。 ssl_cert_name String SSL证书名字。 ssl_cert_key String SSL证书内容,用base64加密。 ssl_cert_check_sum String SSL证书内容checksum值,后端校验,源库安全连接必选。 ssl_cert_password String SSL证书密码,证书文件后缀为.p12时必填。 状态码: 400 表14 响应Body参数 参数 参数类型 描述 error_code String 错误码。 error_msg String 错误描述。
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 Content-Type 是 String 发送的实体的MIME类型。推荐用户默认使用application/json,如果API是对象、镜像上传等接口,媒体类型可按照流类型的不同进行确定。 X-Auth-Token 是 String 从IAM服务获取的用户Token。 用户Token也就是调用获取用户Token接口的响应值,该接口是唯一不需要认证的接口。 请求响应成功后在响应消息头中包含的“X-Subject-Token”的值即为Token值。 X-Language 否 String 请求语言类型。 表3 请求Body参数 参数 是否必选 参数类型 描述 name 是 String 连接名称。 约束:连接名称在4位到50位之间,不区分大小写,可以包含字母、数字、中划线或下划线,不能包括其他特殊字符。 db_type 是 String 连接类型,包含: mysql postgresql mongodb oracle config 否 ConnectionConfig object 连接的配置项,不同类型的连接配置项不同。 description 否 String 描述,长度不能超过255个字符。 endpoint 是 BaseEndpoint object 数据库连接基本信息。 vpc 否 CloudVpcInfo object 数据库实例所在VPC,子网,安全组等信息。 ssl 否 EndpointSslConfig object 数据库SSL证书信息。 cloud 否 CloudBaseInfo object 数据库实例所在Region,项目等信息。 enterprise_project_id 否 String 企业项目ID。 表4 ConnectionConfig 参数 是否必选 参数类型 描述 driver_name 否 String 驱动程序名称。 表5 BaseEndpoint 参数 是否必选 参数类型 描述 id 否 String 数据库信息ID。 endpoint_name 是 String 数据库场景类型。取值: oracle:云下自建Oracle数据库。 ecs_oracle:华为云ECS自建Oracle数据库。 cloud_gaussdbv5:华为云数据库GaussDB分布式。 mysql:他云/本地自建MySQL数据库。 ecs_mysql:华为云ECS自建MySQL数据库。 cloud_mysql:华为云数据库RDS for MySQL。 redis:云下自建Redis数据。 ecs_redis:华为云ECS自建Redis数据。 rediscluster:云下自建Redis集群数据库。 ecs_rediscluster:华为云ECS自建Redis集群数据库。 cloud_gaussdb_redis:华为云数据库GeminiDB Redis。 postgresql: 云下自建PostgreSQL数据库。 ecs_postgresql: 华为云ECS自建PostgreSQL数据库。 cloud_postgresql: 华为云数据库RDS for PostgreSQL。 mongodb: 云下自建MongoDB数据库。 ecs_mongodb: 华为云ECS自建MongoDB数据库。 cloud_mongodb: 华为云文档数据库服务DDS。 ip 否 String 数据库IP。约束:- 数据库为自建MongoDB时,数据库IP与端口之间用“:”英文冒号拼接,多个值之间请用“,”英文逗号隔开,最多支持填写3个IP地址或域名。- 数据库为DDS实例时,数据库IP与端口之间用“:”英文冒号拼接,多个IP端口之间请用“,”英文逗号分隔。- 数据库为Redis集群时,请填写源端Redis集群所有分片的IP地址和对应端口,数据库IP与端口之间用“:”英文冒号拼接,多个IP端口之间请用“,”英文逗号分隔,并且推荐填写集群分片的Slave节点的IP地址。最多支持填写32个IP地址或域名,多个值之间请用英文逗号隔开。示例:- MySQL:ip- MongoDB:ip:port,ip:port,ip:port- DDS:ip:port,ip:port - Redis集群:ip:port,ip:port db_port 否 String 数据库端口。 约束:输入范围为1-65535之间的整数。 db_user 是 String 数据库用户名。 db_password 是 String 数据库密码。 instance_id 否 String 华为云数据库实例ID。 instance_name 否 String 华为云数据库实例名称。 db_name 否 String 指定数据库名称。例如: oracle:serviceName.orcl。 source_sharding 否 Array of BaseEndpoint objects 物理源库信息。 表6 CloudVpcInfo 参数 是否必选 参数类型 描述 vpc_id 是 String 数据库实例所在的虚拟私有云ID,获取方法如下: 方法1:登录虚拟私有云服务的控制台界面,在虚拟私有云的详情页面查找VPC ID。 方法2:通过虚拟私有云服务的API接口查询,具体操作可参考查询VPC列表。 subnet_id 是 String 数据库实例所在子网ID,获取方法如下: 方法1:登录虚拟私有云服务的控制台界面,单击VPC下的子网,进入子网详情页面,查找网络ID。 方法2:通过虚拟私有云服务的API接口查询,具体操作可参考查询子网列表。 security_group_id 否 String 数据库实例所在的安全组ID,获取方法如下: 方法1:登录虚拟私有云服务的控制台界面,在安全组的详情页面查找安全组ID。 方法2:通过虚拟私有云服务的API接口查询,具体操作可参考查询安全组列表。 表7 EndpointSslConfig 参数 是否必选 参数类型 描述 ssl_link 否 Boolean 是否SSL安全连接。如果数据库启用了SSL安全连接,参数值为true。 ssl_cert_name 否 String SSL证书名字。 ssl_cert_key 否 String SSL证书内容,用base64加密。 ssl_cert_check_sum 否 String SSL证书内容checksum值,后端校验,源库安全连接必选。 ssl_cert_password 否 String SSL证书密码,证书文件后缀为.p12时必填。 表8 CloudBaseInfo 参数 是否必选 参数类型 描述 region 是 String 区域ID,当数据库实例类型为ecs(华为云ECS自建数据库),cloud(华为云数据库)时为必填项。获取方法请参见地区和终端节点。 注意:当该Region下存在子项目时,Region ID为区域项目ID与子项目ID,由“_”下划线拼接,例如:cn-north-4_abc。 project_id 是 String 租户在某一Region下的Project ID。 获取方法请参见获取项目ID。 az_code 否 String 数据库所在可用分区(AZ)名称。
  • 操作场景 SSL(Secure Socket Layer,安全套接层),位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层。SSL通过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通讯。 认证用户和服务器,确保数据发送到正确的客户端和服务器。 加密数据以防止数据中途被窃取。 维护数据的完整性,确保数据在传输过程中不被改变。 SSL连接开启后,可以通过SSL方式连接实例,提高数据安全性。
  • 使用须知 SSL连接需要具有一定的操作权限,如需使用,请联系客服申请相应的权限。 开启或关闭SSL会导致实例重启,请谨慎操作。 开启SSL后,可以通过SSL方式连接数据库,具有更高的安全性。 出于安全原因,不安全的加密算法已被禁用。GeminiDB Mongo支持的安全加密算法对应的加密套件如表1所示。 表1 安全加密算法对应的加密套件说明 版本 支持的TLS版本 支持的加密算法套件 4.0 TLS 1.2 DHE-RSA-AES256-GCM-SHA384 DHE-RSA-AES128-GCM-SHA256 用户的客户端所在服务器需要支持对应的TLS版本以及对应的加密算法套件,否则会连接失败。 关闭SSL,可以采用非SSL方式连接数据库。
  • 注意事项 因为安全组的默认规则是在出方向上的数据报文全部放行,同一个安全组内的弹性云服务器和云数据库RDS实例可互相访问。安全组创建后,您可以在安全组中定义各种访问规则,当云数据库RDS实例加入该安全组后,即受到这些访问规则的保护。 默认情况下,一个用户可以创建100个安全组。 默认情况下,一个安全组最多只允许拥有50条安全组规则。 一个RDS实例允许绑定多个安全组,一个安全组可以关联多个RDS实例。 为一个安全组设置过多的安全组规则会增加首包延时,因此,建议一个安全组内的安全组规则不超过50条。 当需要从安全组外访问安全组内的云数据库RDS实例时,需要为安全组添加相应的入方向规则。 为了保证数据及实例安全,请合理使用权限。建议使用最小权限访问,并及时修改数据库默认端口号(3306),同时将可访问IP地址设置为远程主机地址或远程主机所在的最小子网地址,限制远程主机的访问范围。 源地址默认的IP地址0.0.0.0/0是指允许所有IP地址访问安全组内的云数据库RDS实例。 关于添加安全组规则的详细要求,可参考《虚拟私有云用户指南》的“添加安全组规则”章节。