云服务器内容精选

  • 调用API获取项目ID 项目ID可通过调用查询项目列表API获取。 获取项目ID的接口为“GET https://{Endpoint}/v4/projects/”,其中{Endpoint}为需求管理的终端节点,可以从地区和终端节点获取。接口的认证鉴权请参见认证鉴权。 响应示例如下,其中projects下的“project_id”即为项目ID。 { "projects" : [ { "project_num_id" : 3183801, "project_id" : "41bd3eab86544863b8fc92ffcd35e3c8", "project_name" : "demo_project", "description" : "demo", "created_time" : 1576114296000, "updated_time" : 1576114296000, "project_type" : "xboard", "creator" : { "user_num_id" : 4097, "user_id" : "c4bd39f0573a436589714bedbcca8536", "user_name" : "modile_user", "domain_id" : "2489d8cbba804db8bcd35384685ff3ac", "domain_name" : "modile_user", "nick_name" : "Tom.M.Riddle" } } ], "total" : 10 }
  • 通过API方式获取密码 获取创建弹性云服务器时使用的私钥文件(.pem文件)。 设置调用接口的环境。 具体方法请参见《弹性云服务器接口参考》的“接口调用方法”。 获取密文密码。 调用获取密码的接口,获取密钥的公钥加密后的密文密码。该密文密码是通过RSA算法加密的。其中,URI格式为“GET /v2/{tenant_id}/servers/{server_id}/os-server-password”。 调用接口的具体方法请参见《弹性云服务器接口参考》的“Windows弹性云服务器获取密码(OpenStack)”章节。 解密密文密码。 通过创建云服务器时使用的密钥的私钥文件对4中获取的密文密码进行解密。 使用OpenSSL工具,执行以下命令,将密文密码转换为.key -nocrypt格式。 openssl pkcs8 -topk8 -inform PEM -outform DER -in rsa_pem.key -out pkcs8_der.key -nocrypt 调用Java类库org.bouncycastle.jce.provider.BouncyCastleProvider,使用密钥文件,编写代码解密密文。
  • 操作场景 登录Windows操作系统的弹性云服务器时,需使用密码方式登录。因此,用户需先根据创建弹性云服务器时使用的密钥文件,获取该弹性云服务器初始安装时系统生成的管理员密码(Administrator帐户或Cloudbase-init设置的帐户)。该密码为随机密码,安全性高,请放心使用。 请根据您的个人需求,通过管理控制台或API方式获取Windows弹性云服务器的初始密码,获取方法请参见本节内容。
  • 华为云用户授权书 作为华为云合作伙伴(以下简称“我们”),为了更好地向您提供代客操作服务(以下简称“服务”),需要您在华为云用户授权书(以下简称“本授权书”)项下就您账户的相关权限对我们进行授权。在最终同意本授权书前,请仔细阅读并理解华为云网站协议及本授权书内容。线上勾选“我已阅读并同意《华为云用户授权书》”选项将视为您对本授权书的同意,如您不同意授权,您将无法开通代客下单及运维等授权服务。如您后续需撤销授权或操作授权,可随时访问华为云账号中心。 本授权书仅适用于您和我们之间就您名下账户相关操作权限的授予,您对我们做出如下授权并同意如下事项: 一、授权范围及影响。 我们将可以以您的身份登录华为云客户账号中心、费用中心、资源中心、工单管理、消息中心、云服务控制台等模块。 您对我们授予如下您账户项下的操作权限: 管理您购买的华为云云资源。 新购、续订、退订、变更云服务等操作。 进行开机、关机、重启、删除云资源等操作。 重置云服务密码、修改云服务策略等操作。 查看您的账户、消费、订单、优惠和折扣、合同信息等操作。 您知悉并同意,上述所列授权的权限类型可能并不能完全涵盖我们出于为您提供服务之需求所需要的操作授权范围。 本授权书并不能取代或改变您基于华为云网站协议的相关权利义务,本授权书由您直接向我们做出,华为云不参与及承担您在本授权书项下的各项授权行为及后续影响。 您与我们之间因本授权书项下的各项授权行为产生的任何争议与纠纷,将依据我们之间的合同约定自行处理,华为云不承担任何责任。 二、授权更新及撤销。 本授权书可能适时更新,更新后的授权书您可以登录华为云账号中心查看。请您及时查看新的授权内容并了解最新的变化。如果您并未同意新的授权,请及时在华为云账号中心线上终止授权。 三、授权期限。 本授权书项下的授权期限从您确认并点击同意本授权书时开始,直至您在华为云账号中心线上终止该授权为止。 四、如何联系我们。 如果您有任何关于本授权书的疑问,可通过华为云账号中心联系我们。 父主题: 附录
  • 状态码 表1 状态码 状态码 编码 错误码说明 100 Continue 继续请求。 这个临时响应用来通知客户端,它的部分请求已经被服务器接收,且仍未被拒绝。 101 Switching Protocols 切换协议。只能切换到更高级的协议。 例如,切换到HTTP的新版本协议。 201 Created 创建类的请求完全成功。 202 Accepted 已经接受请求,但未处理完成。 203 Non-Authoritative Information 非授权信息,请求成功。 204 NoContent 请求完全成功,同时HTTP响应不包含响应体。 在响应OPTIONS方法的HTTP请求时返回此状态码。 205 Reset Content 重置内容,服务器处理成功。 206 Partial Content 服务器成功处理了部分GET请求。 300 Multiple Choices 多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择。 301 Moved Permanently 永久移动,请求的资源已被永久的移动到新的URI,返回信息会包括新的URI。 302 Found 资源被临时移动。 303 See Other 查看其它地址。 使用GET和POST请求查看。 304 Not Modified 所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。 305 Use Proxy 所请求的资源必须通过代理访问。 306 Unused 已经被废弃的HTTP状态码。 400 BadRequest 非法请求。 建议直接修改该请求,不要重试该请求。 401 Unauthorized 在客户端提供认证信息后,返回该状态码,表明服务端指出客户端所提供的认证信息不正确或非法。 402 Payment Required 保留请求。 403 Forbidden 请求被拒绝访问。 返回该状态码,表明请求能够到达服务端,且服务端能够理解用户请求,但是拒绝做更多的事情,因为该请求被设置为拒绝访问,建议直接修改该请求,不要重试该请求。 404 NotFound 所请求的资源不存在。 建议直接修改该请求,不要重试该请求。 405 MethodNotAllowed 请求中带有该资源不支持的方法。 建议直接修改该请求,不要重试该请求。 406 Not Acceptable 服务器无法根据客户端请求的内容特性完成请求。 407 Proxy Authentication Required 请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权。 408 Request Time-out 服务器等待请求时发生超时。 客户端可以随时再次提交该请求而无需进行任何更改。 409 Conflict 服务器在完成请求时发生冲突。 返回该状态码,表明客户端尝试创建的资源已经存在,或者由于冲突请求的更新操作不能被完成。 410 Gone 客户端请求的资源已经不存在。 返回该状态码,表明请求的资源已被永久删除。 411 Length Required 服务器无法处理客户端发送的不带Content-Length的请求信息。 412 Precondition Failed 未满足前提条件,服务器未满足请求者在请求中设置的其中一个前提条件。 413 Request Entity Too Large 由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个Retry-After的响应信息。 414 Request-URI Too Large 请求的URI过长(URI通常为网址),服务器无法处理。 415 Unsupported Media Type 服务器无法处理请求附带的媒体格式。 416 Requested range not satisfiable 客户端请求的范围无效。 417 Expectation Failed 服务器无法满足Expect的请求头信息。 422 UnprocessableEntity 请求格式正确,但是由于含有语义错误,无法响应。 429 TooManyRequests 表明请求超出了客户端访问频率的限制或者服务端接收到多于它能处理的请求。建议客户端读取相应的Retry-After首部,然后等待该首部指出的时间后再重试。 500 InternalServerError 表明服务端能被请求访问到,但是不能理解用户的请求。 501 Not Implemented 服务器不支持请求的功能,无法完成请求。 502 Bad Gateway 充当网关或代理的服务器,从远端服务器接收到了一个无效的请求。 503 ServiceUnavailable 被请求的服务无效。 建议直接修改该请求,不要重试该请求。 504 ServerTimeout 请求在给定的时间内无法完成。客户端仅在为请求指定超时(Timeout)参数时会得到该响应。 505 HTTP Version not supported 服务器不支持请求的HTTP协议的版本,无法完成处理。 父主题: 附录
  • 状态码 状态码如表1所示 表1 状态码 状态码 编码 错误码说明 100 Continue 继续请求。 这个临时响应用来通知客户端,它的部分请求已经被服务器接收,且仍未被拒绝。 101 Switching Protocols 切换协议。只能切换到更高级的协议。 例如,切换到HTTP的新版本协议。 201 Created 创建类的请求完全成功。 202 Accepted 已经接受请求,但未处理完成。 203 Non-Authoritative Information 非授权信息,请求成功。 204 NoContent 请求完全成功,同时HTTP响应不包含响应体。 在响应OPTIONS方法的HTTP请求时返回此状态码。 205 Reset Content 重置内容,服务器处理成功。 206 Partial Content 服务器成功处理了部分GET请求。 300 Multiple Choices 多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择。 301 Moved Permanently 永久移动,请求的资源已被永久的移动到新的URI,返回信息会包括新的URI。 302 Found 资源被临时移动。 303 See Other 查看其它地址。 使用GET和POST请求查看。 304 Not Modified 所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。 305 Use Proxy 所请求的资源必须通过代理访问。 306 Unused 已经被废弃的HTTP状态码。 400 BadRequest 非法请求。 建议直接修改该请求,不要重试该请求。 401 Unauthorized 在客户端提供认证信息后,返回该状态码,表明服务端指出客户端所提供的认证信息不正确或非法。 402 Payment Required 保留请求。 403 Forbidden 请求被拒绝访问。 返回该状态码,表明请求能够到达服务端,且服务端能够理解用户请求,但是拒绝做更多的事情,因为该请求被设置为拒绝访问,建议直接修改该请求,不要重试该请求。 404 NotFound 所请求的资源不存在。 建议直接修改该请求,不要重试该请求。 405 MethodNotAllowed 请求中带有该资源不支持的方法。 建议直接修改该请求,不要重试该请求。 406 Not Acceptable 服务器无法根据客户端请求的内容特性完成请求。 407 Proxy Authentication Required 请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权。 408 Request Time-out 服务器等候请求时发生超时。 客户端可以随时再次提交该请求而无需进行任何更改。 409 Conflict 服务器在完成请求时发生冲突。 返回该状态码,表明客户端尝试创建的资源已经存在,或者由于冲突请求的更新操作不能被完成。 410 Gone 客户端请求的资源已经不存在。 返回该状态码,表明请求的资源已被永久删除。 411 Length Required 服务器无法处理客户端发送的不带Content-Length的请求信息。 412 Precondition Failed 未满足前提条件,服务器未满足请求者在请求中设置的其中一个前提条件。 413 Request Entity Too Large 由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个Retry-After的响应信息。 414 Request-URI Too Large 请求的URI过长(URI通常为网址),服务器无法处理。 415 Unsupported Media Type 服务器无法处理请求附带的媒体格式。 416 Requested range not satisfiable 客户端请求的范围无效。 417 Expectation Failed 服务器无法满足Expect的请求头信息。 422 UnprocessableEntity 请求格式正确,但是由于含有语义错误,无法响应。 429 TooManyRequests 表明请求超出了客户端访问频率的限制或者服务端接收到多于它能处理的请求。建议客户端读取相应的Retry-After首部,然后等待该首部指出的时间后再重试。 500 InternalServerError 表明服务端能被请求访问到,但是不能理解用户的请求。 501 Not Implemented 服务器不支持请求的功能,无法完成请求。 502 Bad Gateway 充当网关或代理的服务器,从远端服务器接收到了一个无效的请求。 503 ServiceUnavailable 被请求的服务无效。 建议直接修改该请求,不要重试该请求。 504 ServerTimeout 请求在给定的时间内无法完成。客户端仅在为请求指定超时(Timeout)参数时会得到该响应。 505 HTTP Version not supported 服务器不支持请求的HTTP协议的版本,无法完成处理。 父主题: 附录
  • 调用API获取项目ID 项目ID可以通过调用查询指定条件下的项目列表API获取。 获取项目ID的接口为“GET https://{Endpoint}/v3/projects”,其中{Endpoint}为 IAM 的终端节点,可以从地区和终端节点获取。接口的认证鉴权请参见认证鉴权。 响应示例如下,其中projects下的“id”即为项目ID。 { "projects": [ { "domain_id": "65382450e8f64ac0870cd180d14e684b", "is_domain": false, "parent_id": "65382450e8f64ac0870cd180d14e684b", "name": "project_name", "description": "", "links": { "next": null, "previous": null, "self": "https://www.example.com/v3/projects/a4a5d4098fb4474fa22cd05f897d6b99" }, "id": "a4a5d4098fb4474fa22cd05f897d6b99", "enabled": true } ], "links": { "next": null, "previous": null, "self": "https://www.example.com/v3/projects" } }
  • 实例支持的APIC特性 若当前实例中无相关特性,可提交工单申请升级实例解决。 特性名称 特性描述 特性是否可配置 特性配置示例 特性配置参数 参数描述 参数默认值 参数范围 lts 是否支持SHUBAO访问日志上报功能。 是 {"name":"lts","enable":true,"config": "{\"group_id\": ",\"topic_id\":\"\",\"log_group\":\"\",\"log_stream\":\"\"}"} group_id 日志组ID。 - - topic_id 日志流ID。 - - log_group 日志组名称。 - - log_stream 日志流名称。 - - gateway_responses 是否支持网关自定义响应。 否 - - - - - ratelimit 是否支持自定义流控值。 是 {"name":"ratelimit","enable":true,"config": "{\"api_limits\": 500}"} api_limits API全局默认流控值。注意:如果配置过小会导致业务持续被流控,请根据业务谨慎修改。 200 次/秒 1-1000000 次/秒 request_body_size 是否支持指定最大请求Body大小。 是 {"name":"request_body_size","enable":true,"config": "104857600"} request_body_size 请求中允许携带的Body大小上限。 12 M 1-9536 M backend_timeout 是否支持配置后端API超时时间。 是 {"name":"backend_timeout","enable":true,"config": "{"max_timeout": 500}"} max_timeout APIC到后端服务的超时时间上限。 60000 ms 1-600000 ms app_token 是否开启app_token认证方式。 是 {"name":"app_token","enable":true,"config": "{\"enable\": \"on\", \"app_token_expire_time\": 3600, \"app_token_uri\": \"/v1/apigw/oauth2/token\", \"refresh_token_expire_time\": 7200}"} enable 是否开启。 off on/off app_token_expire_time access token的有效时间。 3600 s 1-72000 s refresh_token_expire_time refresh token的有效时间。 7200 s 1-72000 s app_token_uri 获取Token 的uri。 /v1/apigw/oauth2/token - app_token_key Token的加密Key。 - - app_basic 是否开启app_basic认证方式。 是 {"name":"app_basic","enable":true,"config": "on"} - - off on/off app_secret 是否支持app_secret认证方式。 是 {"name":"app_secret","enable":true,"config": "on"} - - off on/off backend_token_allow 是否支持普通租户透传Token到后端。 是 {"name":"backend_token_allow","enable":true,"config": "{\"backend_token_allow_users\": [\"paas_apig_username_01\"]}"} backend_token_allow_users 透传Token到后端普通租户白名单,匹配普通租户domain name正则表达式。 - - sign_basic 签名秘钥是否支持Basic类型。 否 - - - - - multi_auth API是否支持双重认证方式。 否 - - - - - backend_client_certificate 是否开启后端双向认证。 是 {"name":"backend_client_certificate","enable":true,"config": "{\"enable\": \"on\",\"ca\": \"\",\"content\": \"\",\"key\": \"\"}"} enable 是否开启。 off on/off ca 双向认证信任证书。 - - content 双向认证证书。 - - key 双向认证信任私钥。 - - ssl_ciphers 是否支持https加密套件。 是 {"name":"ssl_ciphers","enable":true,"config": "config": "{\"ssl_ciphers\": [\"ECDHE-ECDSA-AES256-GCM-SHA384\"]}"} ssl_ciphers 支持的加解密套件。ssl_ciphers数组中只允许出现默认值中的字符串,且数组不能为空。 - ECDHE-ECDSA-AES256-GCM-SHA384,ECDHE-RSA-AES256-GCM-SHA384,ECDHE-ECDSA-AES128-GCM-SHA256,ECDHE-RSA-AES128-GCM-SHA256,ECDHE-ECDSA-AES256-SHA384,ECDHE-RSA-AES256-SHA384,ECDHE-ECDSA-AES128-SHA256,ECDHE-RSA-AES128-SHA256 app_config 是否支持应用配置。 否 - - - - - green_tunnel 授权是否支持绿色通道。 否 - - - - - app_route 是否支持IP访问。 是 {"name":"app_route","enable":true,"config": "on"} - - off on/off default_group_hide 是否隐藏默认分组。注意:隐藏默认分组后不支持IP访问,如想使用IP访问,建议开启app_route配置。 是 {"name":"default_group_hide","enable":true,"config": "on"} - - off on/off cascade 是否开启级联功能。 是 {"name":"app_route","enable":true,"config": "{\"enable\": \"on\", \"cascade_auth_key\": \"abcdefabcdefabcdefabcdefabcdef11\", \"cascade_instance_ids\":\"104e4816-1e9c-4345-be3a-14528727d0e3\"}"} enable 是否开启级联功能。 off on/off cascade_auth_key 用于生成级联认证token的加密key。 - - cascade_instance_ids 级联时允许作为上级的实例ID。 - - sandbox 是否支持LDA函数沙箱配置。 是 {"name":"sandbox","enable":true,"config": "{\"max_cpu_time\": 30000, \"max_memory\": 1073741824}"} max_cpu_time 允许函数API中执行的CPU时间占用的最高时长。单位:毫秒。 60000 ms 1-1000000 ms max_memory 允许函数API中执行的内存大小。单位:字节。 256 M 1-9536 M livedata_config 是否支持后端服务自定义配置。同时存在sandbox和livedata_config时,优先使用livedata_config。 是 {"name":"sandbox","enable":true,"config": "{\"max_cpu_time\": 30000, \"max_memory\": 1073741824, \"max_memory\": 1073741824, \"dataapi_return_type\": \"no_string\", \"gw_address_protocol\": \"http\", \"livedata_env\": \"offline\",\"procedure_async\": \"off\"}"} max_cpu_time 允许函数API中执行的CPU时间占用的最高时长。单位:毫秒。 60000 ms 1-1000000 ms max_memory 允许函数API中执行的内存大小。单位:字节。 256 M 1-9536 M livedata_env 自定义后端的运行模式,设置为online时,自定义后端API将会按照线上格式返回。 online online/offline gw_address_protocol DICT:gw_rest_float_addr变量中使用的默认请求协议。 none http/https/none procedure_async 存储过程是否使用异步执行。 off on/off dataapi_return_type 数据API的返回格式。 no_string string/no_string real_ip_from_xff 是否使用X-Forwarded-For头中的IP作为ACL、流控的判断依据。 是 {"name": "real_ip_from_xff","enable": true,"config": {"enable": "on","xff_index": -1}} enable 是否开启。 off on/off xff_index X-Forwarded-For头中IP的排序序号,值允许为正数、负数、0。 值为0或正数时,获取X-Forwarded-For头中对应索引的IP。 值为负数时,按倒序方式从X-Forwarded-For头中获取IP。 例如到达API网关的X-Forwarded-For头中依次有IP1,IP2,IP3三个IP地址,xff_index取0时获取IP1,xff_index取1时获取IP2,xff_index取-1时获取IP3,xff_index取-2时获取IP2。 -1 int32有效值 apiclient_first_use_x_hw_id 自定义后端的ApiClient类是否优先使用X-HW-ID字段进行校验。 是 {"name":"apiclient_first_use_x_hw_id","enable":true,"config": "on"} - - off on/off custom_log 是否支持自定义日志功能。 是 {"name":"custom_log","enable":true,"config": "{\"custom_logs\":[{\"location\":\"header\",\"name\":\"test\"},{\"location\":\"query\",\"name\":\"x-query-test001\"}]}"} custom_logs 自定义日志中要打印参数的集合,数量不超过10个。 - - location 参数位置。 - header/query/cookie name 参数名称。 - - real_ip_header_getter 是否开启用户自定义Header获取源IP地址,作为访问控制、流控策略的源IP生效依据。 是 {"name":"real_ip_header_getter","enable":true,"config": "{\"enable\": \"on\",\"header_getter\": \"header:testIP\"}"} enable 是否开启。 off on/off header_getter 获取用户源IP地址的自定义Header。 - - vpc_name_modifiable 负载通道名称是否支持修改。 是 {"name":"vpc_name_modifiable","enable":true,"config": "on"} - - on on/off default_group_host_trustlist DEFAULT分组中的API是否支持非本实例IP访问。 是 {"name":"default_group_host_trustlist","enable":true,"config": "{\"enable\":\"on\",\"hosts\":[\"123.2.2.2\",\"202.2.2.2\"]}"} enable 是否开启。 off on/off hosts 非本实例IP列表。 - - data_api_column_types_converted_to_string 数据后端是否支持数据列类型转换String类型。 是 {"name": "data_api_column_types_converted_to_string", "enable": true, "config": "{\"enable\":\"on\",\"column_types\":[\"nvarchar2\"]}"} enable 是否开启。 off on/off column_types 数据列类型列表:勾选要转换String类型的数据列类型,当前仅支持nvarchar2类型。 - - sse_strategy 是否支持sse传输策略开关。 是 { "name": "sse_strategy", "enable": true, "config": "on" } - - off on/off request_custom_config 支持自定义配置客户端请求相关参数。 是 { "name": "request_custom_config", "enable": true, "config": "{\"http2\":\"on\",\"client_body_timeout\":10}" } http2 HTTP/2协议的开关。 on on/off client_body_timeout 客户端请求体超时时间。 8 秒 1-60 秒 api_uri_no_escape API中请求path的请求参数是否支持不转义 是 {"name":"api_uri_no_escape","enable":true,"config":""} enable 是否开启 false true/false 父主题: 附录
  • 限制条件 挂载OBS时有如下限制: 创建Pod时需要添加annotations字段:obssidecar-injector-webhook/inject: 'true'。 obssidecar-injector-webhook/inject: 'true' : 表示挂载OBS需要创建obssidecar容器。 挂载obs并行文件系统时,obssidecar容器需预留一定内存以保障业务可靠性,防止容器因资源不足异常退出。当业务容器挂载单个obs并行文件系统时,CPU和内存规格建议配置如下: "obssidecar-injector-webhook/cpu": "500m", "obssidecar-injector-webhook/memory": "1024Mi" 当业务容器挂载多个obs并行文件系统时,相应CPU和内存规格逐倍增加。 obssidecar-injector-webhook/cpu: 表示obssidecar容器cpu规格。 obssidecar-injector-webhook/memory: 表示obssidecar容器memory规格。 挂载obs并行文件系统时,可指定挂载的umask来限制文件或目录权限。 obssidecar-injector-webhook/umask:表示obssidecar容器挂载时的权限掩码。
  • 从控制台获取项目ID 登录管理控制台。 鼠标移动到右上角的用户名上,在下拉列表中选择“我的凭证”。 在“我的凭证”页面,可以查看用户名、账号名,在项目列表中查看项目ID。 图1 查看账号ID/项目ID 单击“管理访问密钥”,可以查看已添加的访问密钥ID(Access Key ID,AK)。 如果没有AK/SK,可单击“新增访问密钥”来添加。 如果已生成过AK/SK,找到原来已下载的AK/SK文件,文件名一般为:credentials.csv。
  • 调用API获取项目ID 项目ID还用通过调用查询指定条件下的项目信息API获取。 获取项目ID的接口为“GET https://{Endpoint}/v3/projects”,其中{Endpoint}为IAM的终端节点,可以从地区和终端节点获取。接口的认证鉴权请参见认证鉴权。 响应示例如下,例如VIS部署的区域为"cn-north-4",相应消息体中查找“name”为"cn-north-4",其中projects下的“id”即为项目ID。 { "projects": [ { "domain_id": "65382450e8f64ac0870cd180d14e684b", "is_domain": false, "parent_id": "65382450e8f64ac0870cd180d14e684b", "name": "cn-north-4", "description": "", "links": { "next": null, "previous": null, "self": "https://www.example.com/v3/projects/a4a5d4098fb4474fa22cd05f897d6b99" }, "id": "a4a5d4098fb4474fa22cd05f897d6b99", "enabled": true } ], "links": { "next": null, "previous": null, "self": "https://www.example.com/v3/projects" } }
  • 规格约束 事务 使用DATABASE LINK的时候本地和远程事务的关系如下: 本地事务会同步控制远程事务的提交/回滚状态。 隔离级别的对应关系为: 本地隔离级别 远程隔离级别 Read Uncommitted Repeatable Read Read Committed Repeatable Read Repeatable Read Repeatable Read Serializable Serializable 本地事务提交过程中会向远端发送事务提交请求,如果远端事务提交成功后出现异常情况导致本地的事务提交失败,如连接异常,本地集群实例异常等情况,远端的事务提交无法被撤回,可能出现本地事务与远端事务不一致的情况。 本地用户对DATABASE LINK的使用权限 如果使用了public关键词,就是公有的DATABASE LINK,可以被所有用户/schema使用。 如果没有使用public关键词,就是私有的DATABASE LINK,仅能被当前用户/schema使用(包括sysadmin用户也无法跨schema使用DATABASE LINK)。 通过DATABASE LINK访问远程数据库对象的权限 对远程数据库对象的访问权限与DATABASE LINK绑定的远程连接用户的权限保持一致。 支持SQL范围 DATABASE LINK相关语句支持情况见表1。 DATABASE LINK相关表类型支持情况见表2。 DATABASE LINK函数调用 DATABASE LINK调用远程函数不支持OUT/INOUT参数、聚集函数、窗口函数、以及返回set函数。 PLSQL_BODY内通过DATABASE LINK调用远程数据库的存储过程或函数不支持OUT/INOUT参数、重载函数、聚集函数、窗口函数、以及返回set函数。 PLSQL_BODY内调用远程数据库的存储过程或函数时,应使用[CALL | SELECT] [ schema. ] { func_name@dblink | procedure_name@dblink } ( param_expr )语法格式调用。 PLSQL_BODY内调用远程数据库的无参存储过程或函数时,应使用[CALL | SELECT] [ schema. ] { func_name@dblink | procedure_name@dblink } ( )语法格式调用。 同义词 不支持将DATABASE LINK名创建为一个同义词的使用方法。 不支持通过DATABASE LINK调用远端数据库中指向一个DATABASE LINK对象的同义词。例如如下场景: 步骤一:在DB1上创建表TABLE1。 步骤二:在DB2上创建连接DB1的DBLINK1,并创建同义词"CREATE SYNONYM T1 FOR TABLE1@DBLINK1"。 步骤三:在DB3上创建连接DB2的DBLINK2,通过DBLINK2调用DB2上的同义词T1,"SELECT * FROM T1@DBLINK2"。 表类型约束 HASHBUCKET:不支持通过DATABASE LINK对远端Hash bucket表进行查询或DML操作。 SLICE:不支持通过DATABASE LINK对远端slice表进行查询或DML操作。 复制表:不支持通过DATABASE LINK对远端复制表进行查询或DML操作。 TEMPORARY:不支持通过DATABASE LINK对远端临时表进行查询或DML操作。 视图 目前支持对DATABASE LINK的远端表创建视图,但是当远端表本身的结构发生变化时,该视图使用时可能会发生异常。例如: 步骤一:在DB1上创建表TABLE1。 步骤二:在DB2上创建连接DB1的DBLINK,并创建视图"CREATE VIEW V1 AS SELECT * FROM TABLE1@DBLINK。 步骤三:在DB1上删除TABLE1的一列,在DB2上查询该视图会产生报错。 其他场景: DATABASE LINK表不支持TRIGGER,包括TRIGGER调用函数内使用DATABASE LINK场景、trigger调用函数为DATABASE LINK函数、在DATABASE LINK上定义TRIGGER情况。 暂不支持UPSERT、MERGE语法。 不支持current cursor语法。 不支持查询表的隐藏字段。 dump与备份 不支持DATABASE LINK相关数据库对象的dump,备机不支持DATABASE LINK调用,也不支持被DATABASE LINK连接。 谓词下推约束 仅支持WHERE子句使用的数据类型、操作符和函数是内置的,并且使用的函数是IMMUTABLE类型。 聚集函数下推约束 仅支持单表且没有GROUP、ORDER BY、HAVING、LIMIT子句的SELECT语句,并且不支持窗口函数。 hint下推 支持针对DATABASE LINK表对象的hint条件下推,仅限scan方式的hint下推,语法格式如下: [no] tablescan|indexscan|indexonlyscan(table [index]) 并要求在一个 queryblock 中的表名或表别名不能重复。 表1 支持SQL范围 SQL类型 操作对象 支持选项说明 执行上下文 创建DATABASE LINK DATABASE LINK NA 普通事务块 修改DATABASE LINK DATABASE LINK 仅支持用户名、密码的修改 普通事务块 删除DATABASE LINK DATABASE LINK NA 普通事务块 SELECT语句 普通表、普通视图、全量物化视图 WHERE子句 DATABASE LINK表和内部表JOIN DATABASE LINK表和DATABASE LINK表JOIN 聚集函数 LIMIT子句 ORDER BY子句 GROUP BY子句、HAVING子句 UNION子句 WITH子句 FOR UPDATE子句 Rownum使用 普通事务块、存储过程、函数、高级包、逻辑视图 INSERT语句 普通表 多VALUE插入 普通事务块、存储过程、函数、高级包 UPDATE语句 普通表 LIMIT子句 ORDER BY子句 WHERE子句 普通事务块、存储过程、函数、高级包 DELETE语句 普通表 LIMIT子句 ORDER BY子句 WHERE子句 普通事务块、存储过程、函数、高级包 LOCK TABLE语句 普通表 LOCKMODE子句 NOWAIT子句 普通事务块 表2 表类型支持情况 维度 GaussDB 表类型 DATABASE LINK支持情况 TEMP选项 临时表 不支持 全局临时表 不支持 UN LOG GED选项 非日志表 支持 存储特性 行存 Astore 支持 Ustore 不支持 分区表 不支持 二级分区表 不支持 视图 DATABASE LINK访问远程视图 支持dql,不支持dml 本地视图通过 DATABASE LINK 关联远程表 支持dql,不支持dml
  • 功能描述 在本地数据库利用DATABASE LINK与远程数据库建立连接,并通过DATABASE LINK对远程数据库进行访问。 DATABASE LINK可以分为public或private,private DATABASE LINK仅能被创建者访问,而当DATABASE LINK为public时则所有用户都能访问。 所有已创建的DATABASE LINK信息都存在本地数据库的系统视图gs_db_links中。
  • 注意事项 DATABASE LINK特性只在ORA兼容版本下可以使用。 DATABASE LINK连接的远端数据库仅支持503.1及之后版本。 用户需要保证本地和远端数据库的兼容性参数DBCOMPATIBILITY和guc参数behavior_compat_options、a_format_dev_version、a_format_version取值一致。 DATABASE LINK连接开启session时会设置如下guc参数: set search_path=pg_catalog, '$user', 'public'; set datestyle=ISO; set intervalstyle=postgres; set extra_float_digits=3; 其余参数为远端设置的参数,远端参数与本地参数不同时,可能会出现数据显示格式不一致等情况,使用时应尽量保证远端与本地参数相同。 使用前置准备:使用gs_guc在pg_hba.conf文件中添加白名单允许客户端连接。 示例:gs_guc reload -I all -N all -Z coordinator -Z datanode -h "host all all 192.168.11.11/32 sha256" 详细配置参数信息参考gs_guc客户端认证策略设置。 某些情况集群白名单中也需要添加DN的IP。 创建DATABASE LINK权限需要使用GRANT语法赋予,新建用户默认无权限,系统管理员拥有权限。详见GRANT相关说明。 使用DATABASE LINK对远端表操作时,会在本地创建与远端对应的Schema,若本地不存在该表的元数据信息,会将元数据信息写入本地系统表中,此时会使用7级锁保证写入的一致性,持续到事务结束放锁,删除DATABASE LINK时会将相应的元数据信息删除。 如果业务中有长事务首次使用dblink操作远端对象,会持续持锁直到事务结束,其他首次使用dblink的事务会被阻塞。可通过一条快速执行的语句先对要使用的远端对象做查询操作使其元数据落盘来规避这种情况,如 "select * from t1@dblink where 1=2;"。另外,远端表结构发生变化时本地要更新存储的元数据信息,也会有类似情况。 在本地创建与远端对应的SCHEMA时会使用“USERNAME(私有DATABASE LINK才有)#远端SCHEMA@DBLINK名”做为SCHEMA名,名称长度上限为63。 如果本地与远端字符集不同,可能会出现无法转换的报错,报错信息为远端返回报错。当本地数据库字符编码为gb18030_2022时,发送到远端会被转换为gb18030。因此,若本地数据库的字符集为GB18030_2022时,远程数据库字符集只能是GB18030或GB18030_2022。 使用DATABASE LINK对远端表操作时,会创建一个单节点的NODE GROUP随机绑定一个DN。 当赋予用户创建DATABASE LINK权限时,相当于许可用户使用服务端DATABASE的IP对远端进行访问。若不希望有此效果,应不要使用GRANT对用户赋权。
  • 注意事项 DATABASE LINK特性只在A兼容版本下可以使用。 DATABASE LINK连接的远端数据库仅支持503.1及之后版本。 用户需要保证本地和远端数据库的兼容性参数DBCOMPATIBILITY和GUC参数behavior_compat_options、a_format_dev_version、a_format_version取值一致。 DATABASE LINK连接开启session时会设置如下GUC参数。 set search_path=pg_catalog, '$user', 'public'; set datestyle=ISO; set intervalstyle=postgres; set extra_float_digits=3; 其他参数为远端设置的参数,远端参数与本地参数不同时,可能会出现数据显示格式不一致等情况,使用时应尽量保证远端与本地参数相同。 使用前置准备:使用gs_guc在pg_hba.conf文件中添加白名单允许客户端连接。 示例:gs_guc reload -I all -N all -Z datanode -h "host all all 192.168.11.11/32 sha256" 详细配置参数信息参考gs_guc客户端认证策略设置。 创建DATABASE LINK权限需要使用GRANT语法赋予,新建用户默认无权限,系统管理员拥有权限。详见GRANT相关说明。 使用DATABASE LINK对远端表操作时,会在本地创建与远端对应的Schema,若本地不存在该表的元数据信息,会将元数据信息写入本地系统表中,此时会使用7级锁保证写入的一致性,持续到事务结束放锁,删除DATABASE LINK时会将相应的元数据信息删除。 如果业务中有长事务首次使用dblink操作远端对象,会持续持锁直到事务结束,其他首次使用dblink的事务会被阻塞。可通过一条快速执行的语句先对要使用的远端对象做查询操作使其元数据落盘来规避这种情况,如 "select * from t1@dblink where 1=2;"。另外,远端表结构发生变化时本地要更新存储的元数据信息,也会有类似情况。 如果本地与远端字符集不同,可能会出现无法转换的报错,报错信息为远端返回报错。当本地数据库字符编码为gb18030_2022时,发送到远端会被转换为gb18030。因此,若本地数据库的字符集为GB18030_2022时,远程数据库字符集只能是GB18030或GB18030_2022。 在本地创建与远端对应的SCHEMA时会使用“USERNAME(私有DATABASE LINK才有)#远端SCHEMA@DBLINK名”做为SCHEMA名,名称长度上限为63。 当赋予用户创建DATABASE LINK权限时,相当于许可用户使用服务端DATABASE的IP对远端进行访问。若不希望有此效果,应不要使用GRANT对用户赋权。