华为云用户手册

  • URI URI格式: DELETE /v2.0/{project_id}/datasource/enhanced-connections/{connection_id}/routes/{name} 参数说明 表1 URI参数说明 参数 是否必选 参数类型 描述 project_id 是 String 项目编号,用于资源隔离。获取方式请参考获取项目ID。 connection_id 是 String 跨源id。 name 是 String 路由名称。
  • 响应示例 { "is_success": true, "message": "", "count": 2, "privileges": [ { "is_admin": true, "privileges": [ "ALL" ], "user_name": "tenant1" }, { "is_admin": false, "privileges": [ "SUBMIT_JOB" ], "user_name": "user2" } ], "queue_name": "queue1" }
  • URI URI格式: GET /v1.0/{project_id}/queues/{queue_name}/users 参数说明 表1 URI 参数 参数名称 是否必选 参数类型 说明 project_id 是 String 项目编号,用于资源隔离。获取方式请参考获取项目ID。 queue_name 是 String 队列名称。 表2 query参数 参数名称 是否必选 参数类型 说明 limit 是 Integer 分页查询数量。 offset 是 Integer 分页查询偏移量。
  • 响应消息 表3 响应参数 参数名称 是否必选 参数类型 说明 is_success 否 Boolean 执行请求是否成功。“true”表示请求执行成功。示例值:true。 message 否 String 系统提示信息,执行成功时,信息可能为空。示例值:空。 queue_name 否 String 队列名称。示例值:queue1。 privileges 否 Array of Object 有权限使用该队列的用户及其对应的权限数组。 具体参数请参考表4。 count 否 Long 用户的总个数。 表4 privileges参数 参数名称 是否必选 参数类型 说明 is_admin 否 Boolean 判断用户是否为管理员。示例值:false。 user_name 否 String 用户名称,即该用户在当前队列上有权限。示例值:user2。 privileges 否 Array of Strings 该用户在队列上的权限。示例值:["SUBMIT_JOB"]。
  • 使用临时AK/SK做签名 如果使用临时AK/SK对请求签名,您将签名SDK集成到应用时,请在消息头添加以下参数和参数值: X-Security-Token:{securityToken} 然后使用临时AK/SK对请求进行签名,签名SDK与AK/SK的签名SDK一致。 创建一个API,安全认证选择“华为 IAM 认证”,并发布。 获取当前账号的临时AK/SK与{securityToken},请参考IAM接口文档。 例如获得响应参数为: { "credential": { "access": "P0HEQUQ4XBWXY5WD69X0", "expires_at": "2022-10-17T18:51:25.231000Z", "secret": "3WJu****hDVs", "securitytoken": "XXXXXX......" } } 构造请求,填写签名参数。 ... request.setKey("P0HE****69X0"); request.setSecret("3WJu****hDVs"); request.setMethod("GET"); request.setUrl("url"); request.addHeader("X-Security-Token", "XXXXXX......"); ... 父主题: 常见问题
  • 需要使用Hashtag的多Key命令 以下命令需要使用hashtag,否则会报crossslot错误。 表4 需要使用Hashtag的多Key命令 命令类型 命令 String msetnx List blpopbrpop brpoplpush brpoplpush Set sdiffsdiffstore sinter sinterstore smove sunionsunionstore Sorted Set zinterstore zunionstore Stream xread xreadgroup HyperLogLog pfcount pfmerge Geo georadius georadiusbymember Bitmap bitop Lua eval evalsha
  • Bloom Filter GeminiDB Redis的布隆过滤器底层使用Hash结构实现,请不要使用Hash类型的同名Key。 bf.loadchunk和bf.scandump命令用于迁移,因存储方式不同,不予支持。 出于安全考虑,bf.reserve初始设置的capacity上限为2621440(2M), 当输入的capacity值超过2M时会将capacity自动设置为2M。如需要更大的capacity,请使用布隆过滤器的扩展功能;expansion参数上限为10,超过限制时会自动调整为10。 详情请参考Bloom Filter介绍和Bloom Filter命令说明。 表3 Bloom Filter支持的命令 命令 是否支持 备注 bf.add √ - bf.exists √ - bf.info √ - bf.insert √ - bf.madd √ - bf.mexists √ - bf.reserve √ -
  • 使用须知 该功能目前为公测阶段,如需使用,请联系客服申请开通相应的操作权限。 搭建双活关系前,需要提前创建好两个GeminiDB Redis实例,这两个实例必须在不同VPC下,VPC不允许使用192和172开头的IP,主备实例使用的VPC网段不重叠,需要确保实例所在的VPC网络互通,同region使用对等连接,跨region使用云连接,具体操作请参见网络配置。 搭建双活关系前,需要确保创建的两个GeminiDB Redis实例的规格、磁盘、节点个数保持一致,且端口必须是8635。 搭建双活关系过程中,主实例会有多次秒级中断,需要业务具备重试机制,备实例不能处理业务,备实例的数据会被清空,最终与主实例数据一致。搭建时长取决于节点个数和数据容量。 搭建双活关系后,不允许在主实例和备实例同时进行添加节点、删除节点和规格变更操作。 搭建双活关系后,支持主备实例变更存储容量,用户要避免主备实例容量长期不一致。 搭建双活关系后,不支持flushall命令。 双写的场景,需要业务避免同一时刻或相近的时刻修改同一个key,否则有可能导致数据不一致。备实例不支持flushdb命令。 跨region场景的同步时延主要取决于云连接时延,还取决于写流量和云连接配置的域间带宽是否匹配。如果写流量大于云连接带宽,将会导致同步数据堆积,支持在节点监控上通过“rsync的同步WAL堆积大小”指标查看数据堆积大小并设置告警规则,具体请参见查看监控指标。 双活仅支持集群版实例,不支持主备版实例。 父主题: 双活容灾
  • 应用场景 频控场景 频控指的是对用户在一定时间内(例如一天、一周、一个月)进行某种操作的次数进行限制,可以控制特定广告或信息在一定时间内在特定平台上的展示次数,以避免过度曝光和广告疲劳,同时优化广告效果和用户体验;对于广告来说,也可以提高广告的效果和转化率。此外,频控还可以避免恶意行为,如刷流量、刷评论、刷点赞等。 频控的3个要素包含用户ID、广告ID、触发次数;以用户ID为key,广告ID为field,指定时间内的触发次数为value,恰好构成频控的三要素。先配置好各个广告的指定频控策略,如下图所示即可根据如下的方式来实现频控: 图1 频控Hash方案 最左边通过Hash类型来实现,通过expire命令设置User_1的过期时间为一天,每推送一次通过hincrby来增加指定广告的推送次数,每次推送指定广告前在一天内的推送次数则可以通过hget获取进行判断,一天后该用户的数据自动过期无需手动清理,这样便可以简单地实现频控。但这个方案的缺点在于对于每个用户(即每个key)只能设置一个过期时间,无法做到例如8小时3次这样指定时间段内的灵活的频控策略。 为了做到对每个广告都配置指定时间段内的灵活频控,如中间图所示可以通过将时间戳拼接在value里的方式用Hash类型来实现,但这种方案无疑是增加了业务侧开发的工作量。 如最右图所示,支持给field设置过期时间的exHash类型可以很完美地解决Hash类型面对频控场景的缺点。由于Field支持过期时间设置,那么该场景下,平台可以给每个广告都配置不同时间段内的频次要求,假设此时给AD_2配置的频控策略为8小时内2次,那么如图所示在下一次再准备给User_1推送AD_2广告前,先通过exhget User_1 AD_2命令获取到了该值已经是2时,便可以判断出此时根据平台频控策略,不应该再给User_1推送AD_2广告了。而当8小时一过,User_1的AD_2这个field过期后,exhget无法再获取到这个field的信息,则可以继续给User_1推送AD_2广告了。 购物车场景 双十一期间,相信很多同学购物车里都填满了各种想要清空的宝贝,这里就以购物车场景为例介绍该场景的几种不同Redis类型的实现,并比较这几种实现方案的优缺点。 基于String实现购物车功能 如图图2所示,基于String可以轻松地实现各个用户的购物车功能,该方案需要将用户ID与商品ID进行拼接作为key,例如User_1#Earphones_1,key对应的value为购物车中用户准备购买的数量,其中可能有部分商品为限时特购,所以有过期时间,为key对应的过期时间。 图2 String方案 涉及命令如下: incrby User_N#Product_N [Number] # 增加商品数量 set User_N#Product_N [Number] # 设置商品数量 expire User_N#Product_N Time_N # 设置指定用户购物车中指定物品的过期时间 get User_N#Product_N # 获取商品数量 scan 0 match User_N* # 查找所有User_N下的所有商品 del User_N#Product_N # 删除指定用户购物车中的指定商品 该方案会存在如下问题: 额外拼接增加编、解码开发工作量。 某个用户获取自己的购物车清单时还需要通过scan命令前缀匹配扫描所有key,并通过get命令去获取对应的值。 想要直接获取清单长度时,仍然需要遍历整个前缀key的数目,方法复杂。 存在大量重复的用户名前缀,浪费存储空间。 基于Hash实现购物车功能 可以根据如图3所示的Hash类型来实现购物车的管理,用户ID作为key,商品ID作为field,value为购物车中对应商品的数量。其中对于部分限时特购的商品,其过期时间通过拼接的方式放到field对应的value里。 图3 Hash方案 涉及命令如下: hset User_N Product_N [Number#Time_N] # 设置指定用户购物车中指定商品的数量和过期时间 hincrby User_N Product_N [Number] # 增加指定用户购物车中的指定商品数量 hgetUser_N Product_N # 获取指定用户购物车中指定商品的信息 hgetall User_N # 获取指定用户的所有商品信息 hlen User_N # 获取指定用户购物车中的总商品数量 hdel User_N Product_N # 删除指定用户购物车中的指定商品 该方案相对于String类型的方案有了不少优化: 获取某个用户购物车中的所有商品清单仅需要一个hgetall命令即可。 获取某个用户的清单长度时直接hlen获取即可。 不存在大量重复的用户名前缀问题。 然而该方案仍存在一个明显的缺点,即对于部分限时特购的商品处理起来复杂:对于User_1的Keyboard_1商品,如果要再加一个数量,不能直接使用hincrby,而是需要先hget获取Keyboard_1商品的值并解码,再加上指定的数量再编码后hset对应的值。 基于exHash实现购物车功能 根据如图4所示的exHash类型来实现购物车的管理,同Hash类型一样,用户ID作为key,商品ID作为field,value为购物车中对应商品的数量。其中对于部分限时特购的商品,由于exHash类型可以为Field设置过期时间,其过期时间可通过hset命令直接设置。 图4 ExHash方案 涉及命令如下: exhset User_N Product_N ex Time_N # 设置指定用户购物车中指定商品的数量和过期时间 exhincrby User_N Product_N [Number] keepttl # 增加指定用户购物车中的指定商品数量,保留原先过期时间exhget User_N Product_N # 获取指定用户购物车中指定商品的信息 exhgetall User_N # 获取指定用户的所有商品信息 exhlen User_N # 获取指定用户购物车中的总商品数量 exhdel User_N Product_N # 删除指定用户购物车中的指定商品 del User_N # 清空指定用户的购物车 该方案相对于Hash类型的优化主要体现在可以直接为各field设置过期时间,使业务侧使用起来简单又高效。可以看到exHash类型相关的命令和Hash类型是类似的,使用起来学习成本很低,业务侧改造成本相对也比较低。
  • 请求示例 POST https://{Endpoint}/v3/619d3e78f61b4be68bc5aa0b59edcf7b/redis/instances/a6d3c8a9857b4c81b3c1fe4802dfa4d0in12/slow-logs { "start_time" : "2022-09-06T10:41:14+0800", "end_time" : "2022-09-16T10:41:14+0800", "limit" : 100, "line_num" : "1595659490239433658", "operate_type" : "set", "node_id" : "2997329fe3cb4b3faedcade16df6966eno12", "keywords" : [ "log", "test" ], "max_cost_time" : 100.12, "min_cost_time" : 50.12 }
  • 响应示例 状态码: 200 Success { "slow_logs": [{ "node_name": "test_worker_node_1", "node_id": "dbd0b65ed0c34125a0b04d4e5ba67e66no02", "whole_message": "testDb", "operate_type": "SET", "cost_time": 60.12, "log_time": "2022-09-15T22:49:38.643000Z", "line_num": "1595659490239433659" }] }
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 slow_logs Array of objects 慢日志具体信息。详情请参考表5。 表5 RedisSlowLogDetail 参数 参数类型 描述 node_name String 节点名称。 node_id String 节点ID。 whole_message String 执行语句。 operate_type String 语句类型。 cost_time Double 执行时间。单位:ms。 log_time String 日志产生时间,UTC时间。格式为“yyyy-mm-ddThh:mm:ssZ”。其中,T指某个时间的开始;Z指时区偏移量,例如北京时间偏移显示为+0800。 line_num String 日志单行序列号。
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。 表3 请求Body参数 参数 是否必选 参数类型 描述 start_time 是 String 开始时间,格式为“yyyy-mm-ddThh:mm:ssZ”。 其中,T指某个时间的开始;Z指时区偏移量,例如北京时间偏移显示为+0800。 注:开始时间不得早于当前时间30天。 end_time 是 String 结束时间,格式为“yyyy-mm-ddThh:mm:ssZ”。 其中,T指某个时间的开始;Z指时区偏移量,例如北京时间偏移显示为+0800。 注:结束时间不能晚于当前时间。 limit 是 Integer 表示每次查询的日志条数,最大限制100条。 line_num 否 String 日志单行序列号,第一次查询时不需要此参数,下一次查询时需要使用,可从上一次查询的返回信息中获取。说明:当次查询从line_num的下一条日志开始查询,不包含当前line_num日志。 operate_type 否 String 语句类型,取空值,表示查询所有语句类型。支持查询的所有语句类型如下(以“、”分割):set、get、del、incr、incrby、incrbyfloat、decr、decrby、getset、append、mget、keys、setnx、setex、psetex、delvx、mset、 msetnx、getrange、substr、setrange、strlen、exists、expire、pexpire、expireat、pexpireat、ttl、pttl、persist、type、 scanx、pksetexat、sort、hdel、hset、hget、hgetall、hexists、hincrby、hincrbyfloat、hkeys、hlen、hmget、hmset、hsetnx、 hstrlen、hvals、hscan、hscanx、pkhscanrange、pkhrscanrange、lindex、linsert、llen、lpop、lpush、lpushx、lrange、lrem、 lset、ltrim、rpop、rpoplpush、rpush、rpushx、zadd、zcard、zscan、zincrby、zrange、zrevrange、zrangebyscore、 zrevrangebyscore、zcount、zrem、zunionstore、zinterstore、zrank、zrevrank、zscore、zrangebylex、zrevrangebylex、 zlexcount、zremrangebyrank、zremrangebyscore、zremrangebylex、zpopmax、zpopmin、sadd、spop、scard、smembers、sscan、 srem、sunion、sunionstore、sinter、sinterstore、sismember、sdiff、sdiffstore、smove、srandmember、bitset、bitget、 bitcount、bitpos、bitop、bitfield、pfadd、pfcount、pfmerge、geoadd、georadiusbymember、georadius、geohash、geodist、 geopos、xadd、xack、xgroup、xdel、xtrim、xlen、xrange、xrevrange、xclaim、xpending、xinfo、xread、xreadgroup。 node_id 否 String 节点ID,取空值,表示查询实例下所有允许查询的节点。具体取值请参考表10中的“id”。 keywords 否 Array of strings 根据多个关键字搜索日志全文,表示同时匹配所有关键字。 最多支持10个关键字。 每个关键字最大长度不超过512个字符。 max_cost_time 否 Double 支持根据最大执行时间范围查找日志。单位:ms。 min_cost_time 否 Double 支持根据最小执行时间范围查找日志。单位:ms。
  • 监控指标 云数据库 GeminiDB提供基于 云监控服务 CES的资源和操作监控能力,帮助用户监控账号下的GeminiDB实例,执行自动实时监控、告警和通知操作。用户可以实时掌握实例运行过程中产生的运行指标和存储用量等信息。 关于GeminiDB Redis支持的监控指标,以及如何创建监控告警规则等内容,请参见支持的监控指标。 关于GeminiDB Influx支持的监控指标,以及如何创建监控告警规则等内容,请参见支持的监控指标。 关于GeminiDB Cassandra支持的监控指标,以及如何创建监控告警规则等内容,请参见支持的监控指标。 关于GeminiDB Mongo支持的监控指标,以及如何创建监控告警规则等内容,请参见支持的监控指标。
  • 身份认证 用户访问云数据库 GeminiDB时支持对数据库用户进行身份验证,包含密码验证和IAM验证两种方式。 密码验证 您需要对数据库实例进行管理,通过控制台登录Web客户端页面时,需要对账号密码进行验证,验证成功后方可进行操作。 IAM验证 您可以使用 统一身份认证 服务(Identity and Access Management, IAM)进行精细的权限管理。该服务提供用户身份认证、权限分配、访问控制等功能,可以帮助您安全地控制华为云资源的访问。您创建的IAM用户,需要通过验证用户和密码才可以使用GeminiDB资源。具体请参见创建IAM用户并登录。
  • 访问控制 权限控制 购买实例之后,您可以使用IAM为企业中的员工设置不同的访问权限,以达到不同员工之间的权限隔离,通过IAM进行精细的权限管理。具体内容请参见权限管理。 VPC和子网 虚拟私有云(Virtual Private Cloud,VPC)为云数据库构建隔离的、用户自主配置和管理的虚拟网络环境,提升用户云上资源的安全性,简化用户的网络部署。您可以在VPC中定义安全组、VPN、IP地址段、带宽等网络特性,方便管理、配置内部网络,进行安全、快捷的网络变更。 子网提供与其他网络隔离的、可以独享的网络资源,以提高网络安全性。 具体内容请参见创建虚拟私有云和子网。 安全组 安全组是一个逻辑上的分组,为同一个虚拟私有云内具有相同安全保护需求并相互信任的弹性云服务器和云数据库 GeminiDB实例提供访问策略。为了保障数据库的安全性和稳定性,在使用GeminiDB数据库实例之前,您需要设置安全组,开通需访问数据库的IP地址和端口。 具体请参见设置安全组规则。
  • 约束限制 审核对象仅支持:Table、View、Sequence、Index、Function、Procedure、Trigger。 一次审核Schema的数量不超过10000。 审核数据库过程中,避免对正在审核的数据库对象进行删除等操作,影响审核结果。 如果使用系统模板进行审核时,新版本升级结束后,再次重试或者同数据源审核,会导致审核结果不一致。为避免此现象发生,建议使用自定义模板。 不支持嵌套子函数包含分隔符为单引号的语句,详情可参见表2。
  • 操作步骤 登录UGO服务。 单击左侧导航栏的“数据源管理”。 在数据源管理页面,单击右上角的“创建数据源”按钮。 进入创建数据源页面,完成基本信息的填写。 基本信息填写完成后,“开始测试”高亮显示。 图1 创建数据源 表1 创建数据库档案参数说明 参数名称 说明 名称 在数据源管理项目列表中显示的名称。 唯一且长度范围为5到50个字符,只允许包含英文字母、数字、下划线、中划线。以字母开头、数字或字母结束。 数据库类型 下拉选择待创建的数据库类型。当前仅支持管理 GaussDB 和MySQL数据源信息。 网络类型 公网网络:通过弹性公网IP(Elastic IP,EIP)进行源库连接。 如果源库网络有IP白名单限制,请将弹性公网IP添加至源库网络白名单,确保UGO可以连接源库。 连接方法 仅支持通过服务器名进行连接。 数据库名称 待进行管理的数据库名称。 主机类型 当前仅支持主机IP地址。 主机IP地址 填写具体主机IP地址,IP地址支持IPv4和IPv6。 说明: 支持IPv6数据库如下:MySQL。 主机端口 待进行管理的数据库端口。 用户名 待进行管理的数据库用户名。 密码 待进行管理的数据库密码。 单击“开始测试”,测试通过显示“已连接”,右下角“创建”高亮显示。 当前仅测试连通性,若断连或权限不足,会导致“连接数据库失败”,无法创建数据源。 单击创建。显示“数据源创建成功。”。 单击“关闭”,返回数据源管理页面,用户可以看到最新创建的数据源已在列表中。 可通过序号、名称、数据库名称、数据库类型、IP地址及端口信息进行搜索。 图2 数据源管理
  • 约束限制 规则的嵌套审核仅支持四种详情可参见表1。 With as只考虑SELECT语句。 别名不能和实体表重名,且别名之间不能重名。 暂不支持视图中的表审核。 不支持对数据库系统表及视图审核。 不支持输入的语句, 语句中涉及的表结构,阈值中含有“#”或“/*”的SQL 审核。 function/procedure不支持嵌套子函数包含分隔符为单引号的语句,详情可参见表2。 表1 支持的嵌套审核语句 SQL语句 select id, (select 子查询) as name from table; select id from table where id in (select 子查询); select * from table1,(select 子查询); with e as (select 子查询) select * from e; 表2 不支持嵌套子函数的语句 SQL语句 CREATE OR REPLACE FUNCTION public.xxx(i integer) RETURNS integer LANGUAGE plpgsql AS $function$ BEGIN CREATE FUNCTION xxx(integer, integer) RETURNS integer AS 'select $1 + $2;' LANGUAGE SQL ; CREATE TABLESPACE ds_location1 RELATIVE LOCATION 'tablespace/tablespace_1'; END; $function$; ;
  • 规则约束 所有涉及update、delete规则项,均不支持多表操作审核。 update、delete多表操作仅支持规则项:“不应用单条update、delete语句对多个表实现更新、删除操作”。 对于这两个规则,“在PL/pgSQL中,关键字建议大写,非关键字小写”、“sql语句中,关键字建议大写,非关键字小写”,不要在以对象名作为非保留关键字的语句中使用,存在审核不准确情况,比如:SELECT id FROM name,name是非保留关键字。 “查询系统视图时,如果使用对象名作为筛选条件,对象名应使用小写”支持的系统视图参见表3。 表3 视图审核 视图名 所属schema 表示对象名的列 adm_arguments pg_catalog、sys owner、object_name、package_name、argument_name adm_audit_object pg_catalog、sys username、owner、obj_name、action_name adm_audit_session pg_catalog、sys username、action_name adm_audit_statement pg_catalog、sys username、obj_name、action_name adm_col_comments pg_catalog、sys owner、table_name、column_name、schema adm_col_privs pg_catalog、sys grantor、owner、grantee、table_schema、table_name、column_name、privilege adm_coll_types pg_catalog、sys owner、type_name、elem_type_mod、elem_type_owner、elem_type_name adm_constraints pg_catalog、sys owner、constraint_name、table_name、index_owner、index_name adm_indexes pg_catalog、sys owner、index_name、table_name、table_owner、tablespace_name adm_ind_columns pg_catalog、sys index_owner、index_name、table_name、table_owner、column_name adm_objects pg_catalog、sys owner、object_name、subobject_name adm_procedures pg_catalog、sys owner、object_name、procedure_name、impltypeowner、impltypename adm_role_privs pg_catalog、sys grantee、granted_role adm_tab_col_statistics pg_catalog、sys owner、table_name、column_name、schema adm_roles pg_catalog、sys role adm_source pg_catalog、sys owner、name adm_sys_privs pg_catalog、sys grantee、privilege adm_tab_cols pg_catalog、sys owner、table_name、column_name、data_type_owner、schema、qualified_col_name adm_tab_privs pg_catalog、sys grantee、owner、table_name、grantor、privilege adm_tables pg_catalog、sys owner、table_name、tablespace_name adm_tab_columns pg_catalog、sys owner、table_name、column_name、data_type_owner、schema adm_tab_comments pg_catalog、sys owner、table_name、column_name、schema adm_tab_statistics pg_catalog、sys owner、table_name adm_triggers pg_catalog、sys owner、trigger_name、table_owner、table_name adm_type_attrs pg_catalog、sys type_name、attr_name、attr_type_name、character_set_name adm_types pg_catalog、sys owner、type_name adm_users pg_catalog、sys username、default_tablespace、temporary_tablespace、default_collation adm_views pg_catalog、sys owner、view_name db_all_tables pg_catalog、sys owner、table_name、tablespace_name db_arguments pg_catalog、sys owner、object_name、package_name、argument_name db_col_comments pg_catalog、sys owner、table_name、column_name、schema db_col_privs pg_catalog、sys grantor、owner、grantee、table_schema、table_name、column_name、privilege db_coll_types pg_catalog、sys owner、type_name、elem_type_mod、elem_type_owner、elem_type_name db_constraints pg_catalog、sys owner、constraint_name、table_name、index_owner、index_name db_indexes pg_catalog、sys owner、index_name、table_name、table_owner、tablespace_name db_ind_columns pg_catalog、sys index_owner、index_name、table_name、table_owner、column_name db_objects pg_catalog、sys owner、object_name、subobject_name db_procedures pg_catalog、sys owner、object_name db_tab_col_statistics pg_catalog、sys owner、table_name、column_name、schema db_source pg_catalog、sys owner、name db_tab_columns pg_catalog、sys owner、table_name、column_name、data_type_owner、schema db_tab_comments pg_catalog、sys owner、table_name、schema db_tables pg_catalog、sys owner、table_name、tablespace_name db_triggers pg_catalog、sys trigger_name、table_owner、table_name db_types pg_catalog、sys owner、type_name db_users pg_catalog、sys username db_views pg_catalog、sys owner、view_name dict pg_catalog、sys table_name dictionary pg_catalog、sys table_name my_col_comments pg_catalog、sys owner、table_name、column_name、schema my_col_privs pg_catalog、sys grantor、owner、grantee、table_schema、table_name、column_name、privilege my_coll_types pg_catalog、sys owner、type_name、elem_type_mod、elem_type_owner、elem_type_name my_constraints pg_catalog、sys owner、constraint_name、table_name、index_owner、index_name my_indexes pg_catalog、sys owner、index_name、table_name、table_owner、tablespace_name my_ind_columns pg_catalog、sys index_owner、index_name、table_name、table_owner、column_name my_objects pg_catalog、sys object_name、subobject_name my_procedures pg_catalog、sys owner、object_name、procedure_name、impltypeowner、impltypename my_role_privs pg_catalog、sys grantee、granted_role my_tab_col_statistics pg_catalog、sys table_name、column_name、schema my_source pg_catalog、sys owner、name my_tab_columns pg_catalog、sys owner、table_name、column_name、data_type_owner、schema my_tab_comments pg_catalog、sys owner、table_name、column_name、schema my_tab_statistics pg_catalog、sys table_name my_tables pg_catalog、sys owner、table_name、tablespace_name my_triggers pg_catalog、sys owner、trigger_name、table_owner、table_name my_type_attrs pg_catalog、sys type_name、attr_name、attr_type_name、character_set_name my_types pg_catalog、sys type_name my_views pg_catalog、sys owner、view_name pg_indexes pg_catalog、sys schemaname、tablename、indexname、tablespace pg_roles pg_catalog、sys rolename pg_tables pg_catalog、sys schemaname、tablename、tableowner、tablespace、tablecreator pg_user pg_catalog、sys username、nodegroup pg_views pg_catalog、sys schemaname、viewname、viewowner column_privileges information_schema、sys grantor、grantee、table_catalog、table_schema、table_name、column_name columns information_schema、sys table_catalog、table_schema、table_name、column_name constraint_column_usage information_schema、sys table_catalog、table_schema、table_name、column_name、constraint_catalog、constraint_schema、constraint_name constraint_table_usage information_schema、sys table_catalog、table_schema、table_name、constraint_catalog、constraint_schema、constraint_name enabled_roles information_schema、sys role_name schemata information_schema、sys catalog_name、schema_name、schema_owner、default_character_set_catalog、default_character_set_schema、default_character_set_name table_constraints information_schema、sys constraint_catalog、constraint_schema、constraint_name、table_catalog、table_schema、table_name table_privileges information_schema、sys grantor、grantee、table_catalog、table_schema、table_name tables information_schema、sys table_catalog、table_schema、table_name、self_referencing_column_name、user_defined_type_catalog、user_defined_type_schema、user_defined_type_name triggers information_schema、sys trigger_catalog、trigger_schema、trigger_name、event_object_catalog、event_object_schema、event_object_table、action_reference_old_table、action_reference_new_table usage_privileges information_schema、sys grantor、grantee、object_catalog、object_schema、object_name views information_schema、sys table_catalog、table_schema、table_name
  • Microsoft SQL Server To GaussDB配置项使用说明 问题描述 配置建议 建议值 SQLServer 表字段支持IDENTITY属性,但GaussDB不支持该属性,默认无法迁移。 建议配置”IDENTITY列“解决该类问题。 将IDENTITY属性列转换为SERIAL类型。 影响:序列号数据类型是四个字节的自增整数。取值范围为1至2147483647。超过这个上限,GaussDB将报错,DML语句执行失败。 SQLServer 表字段支持bit类型,但是GaussDB,不支持该属性,默认无法迁移。 建议配置“bit类型”解决该类问题。 将bit类型转化为boolean类型。 影响:boolean类型的取值相比bit类型多了一个“null”。 SQLServer支持datetimeoffset数据类型,但是GaussDB不支持, 默认转成timestamptz(二者最大秒数精度存在差异),时间函数year等转换方案处理结果在特殊情况下存在差异。 建议配置"datetimeoffset类型转换"解决该类问题 将datetimeoffset类型转换为varchar2类型。 影响:datetimeoffset类型转换为varchar2类型。 高斯O模式空字符串''等同于null,ISNULL等函数转换方案存在语义问题。 建议配置"忽略空字符串''为null的风险"解决该类问题。 不忽略空字符串''为null的风险。 影响:存在空字符串''风险的函数不进行转换。 GaussDB 分布式不支持外键约束,相关CREATE TABLE以及ALTER TABLE语句涉及外键约束会导致执行异常,需要根据实际业务情况选择是否需要外键特性。 建议配置"FOREIGN KEY约束"解决该类问题。 影响:注释FOREIGN KEY约束,注释后,原表的外键约束失效,不能确保数据保持一致,有可能创建不一致的数据。 GaussDB 数据库不支持SQL Server表变量(包括多语句表值函数返回表定义),目前GaussDB 较为接近的转换方案为临时表,二者在部分使用场景下有区别,用户根据需要选择是否开启对表变量类型的转换。 建议配置"是否转换表变量(包括多语句表值函数返回表定义)"解决该类问题。 将表变量转换临时表。 影响:SQL Server中显式表变量不遵循事务的回滚语义,GaussDB中临时表遵循事务回滚语义,需要关注业务语义是否发生变化。 父主题: 配置说明
  • 约束限制 规则的嵌套审核仅支持以下四种“select list |from|where |with xx as”,详情可参见表1。 别名不能和实体表重名,且别名之间不能重名。 暂不支持视图中的表审核。 不支持对数据库系统表及视图审核。 不支持语句中含有“#”或“/*”的SQL 审核。涉及点(依赖表结构、语句、阈值等)。 文件审核中和审核完成后,不可点击“重试”按钮。 如果使用系统模板进行审核时,新版本升级结束后,再次重试或者同文件审核,会导致审核结果不一致。为避免此现象发生,建议使用自定义模板。 function/procedure不支持嵌套子函数包含分隔符为单引号的语句,详情可参见表2。
  • 前提条件 Oracle为源库,为了确保 DBMS_METADATA.GET_DDL 方法返回的对象DDL保持统一,建议您对Oracle源库进行如下设置。 不生成排序规则子句(影响对象:USER、TABLE、CLUSTER、VIEW、MATERIALIZED_VIEW、PROCEDURE、FUNCTION、PACKAGE、TYPE、TRIGGER)。 call DBMS_METADATA.SET_TRANSFORM_PA RAM (dbms_metadata.SESSION_TRANSFORM, 'COLLATION_CLAUSE', 'NEVER'); 让表约束、索引将成为CREATE TABLE语句的一部分,而不是单独的ALTER、TABLE语句 call DBMS_METADATA.SET_TRANSFORM_PARAM(dbms_metadata.SESSION_TRANSFORM, 'CONSTRAINTS_AS_ALTER', false); 用户需拥有创建UGO评估项目的对应权限。具体权限,可参见权限管理进行设置。 各源库分别需要具备以下权限,需成功测试连接到源数据库并通过所有预检查项。 Oracle源数据库连接用户需要具有待迁移数据库的DBMS_METADATA、动态视图和Schema对象数量检查的权限。 MySQL为源库时需要具有MySQL系统库的查询权限、PRO CES S权限和待迁移数据库的所有权限。从MySQL-8.0版本开始,针对存储过程和存储函数,还需要SHOW_ROUTINE权限。 DB2 for LUW为源库需要具有DBADM或DATAACCESS权限。 GoldenDB为源库时需要具有GoldenDB系统库的查询权限、PROCESS权限和待迁移数据库的所有权限。针对存储过程和存储函数,还需要SHOW_ROUTINE权限。 Microsoft SQL Server为源库时需要具有VIEW DEFINITION权限。 建议使用非生产环境数据库。 同一套源库中UGO不支持评估同名的重载函数。 GoldenDB为源库时,建议使用CN节点上用户来创建评估任务。 以MySQL 和 GoldenDB为源,如果给用户赋予了全局的SELECT权限,SHOW_ROUTINE权限也能通过,无需再单独授予。
  • 统一身份认证服务 统一身份认证服务(Identity and Access Management,简称IAM)为UGO提供了权限管理功能。 需要拥有UGO的Administrator权限后,您才能使用UGO。如需开通该权限,请联系拥有Security Administrator权限的用户,或者申请具有UGO Administrator权限的新用户。 统一身份认证服务的更多信息,请参见《统一身份认证服务用户指南》。
  • VPC终端节点 服务 UGO依赖VPC终端节点服务(VPC Endpoint)作为目标库连接代理,用来安全地访问您的目标数据库。 当您使用UGO创建迁移项目时,您除了需要拥有UGO FullAccess权限外,也需要拥有VPC Endpoint Administrator权限或Tenant Administrator权限。UGO会为您的目标库创建VPC终端节点服务,并在您结束迁移删除项目时为您删除对应的VPC终端节点服务。 创建VPC终端节点服务不收取任何费用。UGO会为创建的VPC终端节点服务添加白名单权限控制,确保您目标库的连接安全,您也可以在VPC终端节点服务页面看到目标库相应的终端节点服务。为了保证UGO功能使用正常,请不要在迁移项目未结束时删除目标库对应的VPC终端节点服务。
  • 数据复制服务 数据库和应用迁移 UGO着重于异构数据库结构,如表结构、视图和存储过程等对象的迁移上云,解决数据库语法转换不兼容的问题。 数据复制服务(Data Replication Service)则着重于数据库毫秒级数据同步,支持同构异构数据库之间的数据传输/搬迁,降低数据库之间数据流通的复杂性,减少数据传输成本。 对于迁移方案来说,将存储过程、函数较复杂的异构数据库上云,UGO+DRS会是一个完整的闭环方案,建议同时使用。
  • SQL Server为源 以具有创建数据库权限的用户登录Gauss数据库。 执行以下命令,使用Oracle兼容模式创建Gauss数据库。 主备版: create database databasename dbcompatibility = 'A' ; 分布式: create database databasename dbcompatibility = 'ORA'; 执行以下命令,查看是否创建成功。 select * from pg_database where datname = 'databasename'; 主备版:若datcompatibility兼容性一列为A,则数据库创建成功。 分布式:若datcompatibility兼容性一列为ORA,则数据库创建成功。
  • RDS for PostgreSQL主备实例磁盘空间和备份空间的区别 对于RDS for PostgreSQL数据库,将业务访问的节点称为主实例,同时主实例数据会实时同步到另一个节点(称为备实例)。备实例仅作为备份形式存在,不提供业务访问,当主实例故障时,RDS for PostgreSQL会自动将备实例升为主实例,从而达到高可用的目的。 磁盘空间 备实例磁盘空间大小和主实例是一致的,当主实例扩容时,会同时扩容备实例。 主备实例的数据会实时同步,当大量业务写入或复制时延高时可能会导致主备实例间来不及同步,此时主节点会保留所需要的wal日志,使该部分wal日志无法被清理,从而导致wal日志积压,占用磁盘空间。 备份空间 数据库的备份空间用来存放自动备份、手动备份文件,以及SQL审计日志。免费备份空间和实例磁盘容量一致,需要设置备份策略,当使用超出后会按照阶段收取费用。 当备份空间满时,可参考如何清理云数据库RDS的备份空间来清理备份空间。 父主题: 资源及磁盘管理
  • 前提概要 前提:体验需要三方配合,首先要开通IoTEdge,用于节点管理和应用管理,再开通IoTDA,用于设备接入与管理,还得有边缘服务器作为节点被IoTEdge纳管。 边缘服务器:第一点提到的IoTEdge和IoTDA是华为云服务,使用华为云租户账号直接免费开通可用,边缘服务器属于硬件,可以购买低配的E CS 代替,其EIP则作为边缘服务器的节点IP地址。 在IoTEdge上注册节点:在购买的ECS上执行安装脚本命令,即自动部署好2个系统应用,agent用于节点应用管理,hub用于数据通信。 网关设备:在上一步注册节点的同时,IoTEdge会自动在IoTDA侧创建一个网关设备,即IoTDA把整个边缘节点(也即边缘网关)当成一个网关设备。该网关设备用于边缘节点与IoTDA之间的数据交互。 边缘设备:在网关设备下注册边缘设备,则相当于边缘设备是网关下的子设备,用于边缘设备与边缘节点之间的数据交互。本示例采用MQTT.fx工具模拟边缘设备。 数据上报:边缘设备上报的数据是到边缘节点(即购买的ECS服务器),然后由节点上的系统应用(hub)负责json格式解析,再根据该边缘设备与网关设备的父子关系,重新组装json数据格式,用网关设备上报给IoTDA。 概述:边缘设备上报数据到边缘节点,然后节点上的系统应用把数据解析重新拼装,以网关设备上报的方式把数据报给IoTDA。数据上报流程不经过IoTEdge云服务,IoTEdge主要做节点和应用管理。
  • 前提概要 前提:体验需要三方配合,首先要开通IoTEdge,用于节点管理和应用管理,再开通IoTDA,用于设备接入与管理,还得有边缘服务器作为节点被IoTEdge纳管。此外还需开通SWR,用于存储已开发并想部署在边缘节点上运行的Docker镜像。 边缘服务器:第一点提到的IoTEdge, IoTDA, SWR是华为云服务,使用华为云租户账号直接免费开通可用,边缘服务器属于硬件,可以购买低配的ECS代替,其EIP则作为边缘服务器的节点IP地址。 在IoTEdge上注册节点:在购买的ECS上执行安装脚本命令,即自动部署好2个系统应用,agent用于节点应用管理,hub用于数据通信。 Docker镜像:是集成了边缘SDK的应用程序打包成的容器镜像,可作为边缘节点的自定义应用部署到边缘服务器上运行,可在节点上进行设备数据协议解析、子系统数据解析、数据业务处理、智能计算等。 概述:用户将Docker镜像打包上传到SWR云服务,通过IoTEdge将该容器镜像配置为用户自定义应用,按需部署到指定边缘节点上运行起来。
共100000条