华为云用户手册

  • 逻辑订阅完整使用示例 发布端创建表 create table tableName(id int primary key, num int); 发布端创建发布 create publication pubName for table tableName; 发布端创建一个Failover Slot(若为PostgreSQL12或13版本,则去掉第四个参数false) SELECT * FROM pg_create_logical_replication_slot('slotname', 'pgoutput', false, false, true); 发布端插入数据 insert into tableName values(1,1); insert into tableName values(2,2); 订阅端创建表 create table tableName (id int primary key, num int); 订阅端创建订阅,指定创建的Failover Slot名称 create subscription subName connection 'host=192.168.0.10 dbname=postgres user=root port=5432 password=xxxxxxx' publication pubName with(copy_data=true,create_slot=false,slot_name= slotname); 订阅端查询数据,验证数据是否订阅到 select * from tableName; 主备切换 发布端继续插入数据,在订阅端查看,逻辑订阅不会断开。
  • 使用方法 在发布端执行如下SQL,创建一个Failover Slot: 表1 命令及参数说明 版本 命令 参数说明 PostgreSQL12和PostgreSQL13版本 SELECT * FROM pg_create_logical_replication_slot('slotname', 'pgoutput', false, true); slotname表示logical slot的名称。 pgoutput表示plugin的名称,也可以更改为其他支持的插件。 第三个参数(例如false),表示该slot是否为临时slot。 第四个参数(例如true),表示该slot是否为Failover Slot。 PostgreSQL14及以上版本 SELECT * FROM pg_create_logical_replication_slot('slotname', 'pgoutput', false, false, true); slotname表示logical slot的名称。 pgoutput表示plugin的名称,也可以更改为其他支持的插件。 第三个参数(例如false),表示该slot是否为临时slot。 第四个参数(例如true),表示是否启动两阶段提交选项。 第五个参数(例如true),表示该复制槽是否为Failover slot。 因此,如果要创建一个Failover Slot,在第三个参数临时slot字段必须为false,最后一个参数必须为true。如果最后一个参数省略不写,则创建的是非Failover Slot。
  • 使用场景 RDS for PostgreSQL的逻辑订阅故障转移(Failover Slot)功能用来将那些指定为failover slot的逻辑复制槽信息从主实例同步到备实例,当主备切换之后逻辑订阅能够继续进行,实现逻辑复制槽的故障转移。 当用户使用逻辑复制时,由于slot信息不会随着主备切换转移到新的主实例上,一旦实例发生主备切换,逻辑订阅就会断开,此时除非手动重新创建slot,否则逻辑订阅无法重新连接。RDS for PostgreSQL的Failover Slot功能可以将所有的logical slot从主实例同步到备实例,避免主备切换后逻辑订阅断开。
  • 应用场景 设置相关参数值如下,分别对下列参数适用的场景进行分析。 show variables like '%idle%'; +-----------------------------------+-------+ | Variable_name | Value | +-----------------------------------+-------+ | idle_readonly_transaction_timeout | 5 | | idle_transaction_timeout | 10 | | idle_write_transaction_timeout | 15 | +-----------------------------------+-------+ 设置idle_readonly_transaction_timeout 设置参数idle_readonly_transaction_timeout=5。 使用begin开启事务,执行查询语句,查询结果如下: begin; Query OK, 0 rows affected (0.00 sec) select * from t1; +-----+-----+-----+-----+ | a | b | c | d | +-----+-----+-----+-----+ | 1 | b | 303 | d | +-----+-----+-----+-----+ 1 row in set (0.00 sec) 在idle_readonly_transaction_timeout设置的5s范围以外执行一次查询操作,结果如下: select * from t1; +-----+-----+-----+-----+ | a | b | c | d | +-----+-----+-----+-----+ | 1 | b | 303 | d | +-----+-----+-----+-----+ 1 row in set (0.00 sec) select * from t1; ERROR 2006(HY000): MySQL server has gone away 设置idle_transaction_timeout,idle_readonly_transaction_timeout,idle_write_transaction_timeout 设置参数idle_transaction_timeout=10,idle_readonly_transaction_timeout=0,idle_write_transaction_timeout=0。 show variables like '%idle%'; +-----------------------------------+-------+ | Variable_name | Value | +-----------------------------------+-------+ | idle_readonly_transaction_timeout | 0 | | idle_transaction_timeout | 10 | | idle_write_transaction_timeout | 0 | +-----------------------------------+-------+ 3 rows in set (0.01 sec) 只读事务 当idle_readonly_transaction_timeout=0时,idle_transaction_timeout参数生效。 使用begin开启事务,查询表数据,结果如下: begin; Query OK, 0 rows affected (0.00 sec) select * from t1; +-----+-----+-----+-----+ | a | b | c | d | +-----+-----+-----+-----+ | 1 | b | 43 | d | +-----+-----+-----+-----+ 1 row in set (0.00 sec) 10s之后重复执行上述查询操作,结果如下: select * from t1; ERROR 2006(HY000): MySQL server has gone away 读写事务 当idle_write_transaction_timeout=0时,,idle_transaction_timeout参数生效。 使用begin开启事务后,插入数据,在10s以内执行一条查询语句,结果如下: begin; Query OK, 0 rows affected (0.00 sec) INSERT INTO t1(a,b,c,d) VALUES (1,'b',FLOOR( 1 + (RAND()*1000)) ,'d'); Query OK, 1 rows affected (0.00 sec) select * from t1; +-----+-----+-----+-----+ | a | b | c | d | +-----+-----+-----+-----+ | 1 | b | 425 | d | +-----+-----+-----+-----+ 1 row in set (0.00 sec) 10s后执行一条查询语句,结果如下: select * from t1; ERROR 2006(HY000): MySQL server has gone away 之后单独执行一条查表语句,结果如下,表示此时事务已经回滚。 select * from t1; Empty set (0.00 sec) 设置idle_write_transaction_timeout 设置参数idle_write_transaction_timeout=15。 首先由begin开启事务并插入一条数据,结果如下: begin; Query OK, 0 rows affected (0.00 sec) INSERT INTO t1(a,b,c,d) VALUES (1,'b',FLOOR( 1 + (RAND()*1000)) ,'d'); Query OK, 1 rows affected (0.00 sec) 在idle_write_transaction_timeout设置的15s范围以内执行一次查询操作,结果如下: select * from t1; +-----+-----+-----+-----+ | a | b | c | d | +-----+-----+-----+-----+ | 1 | b | 987 | d | +-----+-----+-----+-----+ 1 row in set (0.00 sec) 15s后再次执行查询,结果如下: select * from t1; ERROR 2006(HY000): MySQL server has gone away 重新连接数据库,执行一条查询语句,结果如下,表示此时事务已经回滚。 select * from t1; Empty set (0.00 sec)
  • 参数介绍 通过show variables查询相关参数。 show variables like '%idle%'; +------------------------------------+------+ | Variable_name | Value | +-----------------------------------+-------+ | idle_readonly_transaction_timeout | 0 | | idle_transaction_timeout | 0 | | idle_write_transaction_timeout | 0 | +-----------------------------------+-------+ 表1 参数总览 参数名 参数类型 取值范围 是否动态生效 参数描述 idle_readonly_transaction_timeout integer 正整数 是 控制只读事务连接的超时时间(单位:秒),参数设置为0时不生效,即表示只读事务连接的超时时间没有限制。 idle_transaction_timeout integer 正整数 是 控制一般空闲事务连接的超时时间(单位:秒),参数设置为0时不生效,即表示一般空闲事务的连接超时时间没有限制。 说明: “idle_readonly_transaction_timeout”和“idle_write_transaction_timeout”参数的优先级高于“idle_transaction_timeout”参数。 如果设置“idle_readonly_transaction_timeout”或“idle_write_transaction_timeout”参数值并使之生效,那么“idle_transaction_timeout”参数将会失效。 如果仅设置“idle_transaction_timeout”参数值并使之生效,那么在进行事务的读写操作时,超时时间均以“idle_transaction_timeout”设置的参数值为准。 idle_write_transaction_timeout integer 正整数 是 控制读写事务连接的超时时间(单位:秒),参数设置为0时不生效,即表示读写事务连接的超时时间没有限制。
  • MDL锁视图详解 MDL锁视图以系统表的形式呈现,该表位于“information_schema”下,表名称是“metadata_lock_info”。表结构如下所示。 desc information_schema.metadata_lock_info; +---------------+-----------------------+---------+------+----------+--------| | Field | Type | Null |Key |Default | Extra | +---------------+-----------------------+---------+------+----------+--------| | THREAD_ID | bigint(20) unsigned | NO | | 0 | | | LOCK_STATUS | varchar(24) | NO | | | | | LOCK_MODE | varchar(24) | YES | | NULL | | | LOCK_TYPE | varchar(30) | YES | | NULL | | | LOCK_DURATION | varchar(30) | YES | | NULL | | | TABLE_SCHEMA | varchar(64) | YES | | NULL | | | TABLE_NAME | varchar(64) | YES | | NULL | | +---------------+-----------------------+---------+------+----------+--------| 表1 metadata_lock_info字段 序号 字段名 字段定义 字段说明 0 THREAD_ID bigint(20) unsigned 会话ID。 1 LOCK_STATUS varchar(24) MDL锁的两种状态。 PENDING:表示会话正在等待该MDL锁。 GRANTED:表示会话已获得该MDL锁。 2 LOCK_MODE varchar(24) 加锁的模式,如MDL_SHARED 、MDL_EXCLUSIVE 、MDL_SHARED_READ、MDL_SHARED_WRITE等。 3 LOCK_TYPE varchar(30) MDL锁的类型,如Table metadata lock、Schema metadata lock、Global read lock、Tablespace lock等。 4 LOCK_DURATION varchar(30) MDL锁范围,取值如下: MDL_STATEMENT:表示语句级别。 MDL_TRANSACTION:表示事务级别。 MDL_EXPLICIT:表示GLOBAL级别。 5 TABLE_SCHEMA varchar(64) 数据库名,对于部分GLOBAL级别的MDL锁,该值为空。 6 TABLE_NAME varchar(64) 表名,对于部分GLOBAL级别的MDL锁,该值为空。
  • MDL锁视图案例分析 问题描述 用户发现对表t2执行truncate操作一直被阻塞后,业务流程中对表t2执行查询操作也全部被阻塞。 排查分析 无MDL锁视图 当发现DDL语句被阻塞后,执行show processlist查看线程信息,结果如下所示。 show processlist; +------+--------+--------------+--------+-----------+----------+-----------------------------------|-------------------------| | Id | User | Host | db | Command | Time | State |Info | +---------------+-----------------------+-----------+----------+-----------------------------------+-------------------------| | 2 | root | localhost | test | Sleep | 73 | | Null | | 3 | root | localhost | test | Sleep | 63 | | Null | | 4 | root | localhost | Null | Query | 35 | Waiting for table metadata lock | truncate table test.t2 | | 5 | root | localhost | test | Query | 17 | Waiting for table metadata lock | select * from test.t2 | | 6 | root | localhost | test | Query | 0 | starting | show processlist | +------+--------+--------------+--------+-----------+----------+-----------------------------------|-------------------------| 上述线程列表信息显示: ID=4的会话执行truncate操作时被其他会话持有的table metadata lock阻塞。 ID=5的会话执行查询操作时同样被阻塞。 无法确定哪个会话阻塞了ID=4的会话和ID=5的会话。 此时,如果随机KILL其他会话会给线上业务带来很大风险,因此只能等待其他会话释放该MDL锁。 使用MDL锁视图 执行select * from information_schema.metadata_lock_info查看元数据锁信息,结果如下所示。 select * from information_schema.metadata_lock_info; +-------------+-------------+--------------------------+----------------------+-------------------+----------------+----------------+ | THREAD_ID | LOCK_STATUS | LOCK_MODE | LOCK_TYPE | LOCK_DURATION | TABLE_SCHEMA | TABLE_NAME | +-------------+-------------+--------------------------+----------------------+-------------------+----------------+----------------+ | 2 | GRANTED | MDL_SHARED_READ | Table metadata lock | MDL_TRANSACTION | test | t1 | | 3 | GRANTED | MDL_SHARED_READ | Table metadata lock | MDL_TRANSACTION | test | t2 | | 4 | GRANTED | MDL_INTENTION_EXCLUSIVE | Global read lock | MDL_STATEMENT | | | | 4 | GRANTED | MDL_INTENTION_EXCLUSIVE | Schema metadata lock | MDL_TRANSACTION | test | | | 4 | PENDING | MDL_EXCLUSIVE | Table metadata lock | | test | t2 | | 5 | PENDING | MDL_SHARED_READ | Table metadata lock | | test | t2 | +-------------+-------------+--------------------------+----------------------+-------------------+----------------+----------------+ 结合show processlist的结果,从元数据锁视图中可以明显看出: 上述线程信息和元数据锁视图信息显示: THREAD_ID=4的会话正在等待表t2的metadata lock。 THREAD_ID=3的会话持有表t2的metadata lock,该MDL锁为事务级别,因此只要THREAD_ID=3的会话的事务不提交,THREAD_ID=4的会话将会一直阻塞。 因此,用户只需在THREAD_ID=3的会话中执行命令commit或终止THREAD_ID=3的会话,便可以让业务继续运行。
  • MDL锁视图使用示例 使用场景:长时间未提交事务,阻塞DDL,继而阻塞所有同表的操作。 表2 MDL锁视图示例 表名 会话 session2 session3 session4 session5 t1 begin; select * from t1; - - - t2 - begin; select * from t2; - - t3 - - truncate table t2; (blocked) - t4 - - - begin; select * from t2; (blocked)
  • MDL锁视图简介 社区版MySQL如果不打开performance_schema开关,则无法获取表元数据锁(MDL)的详细信息,但通常情况下performance_schema默认关闭,当用户遇到类似“Waiting for metadata lock”的问题而阻塞DML或DDL后,由于无法确定各个会话之间的关联关系,只能重启实例,增加了解决问题的成本,对业务产生了较大影响。 在业务场景较复杂的情况下,一旦涉及对数据库元数据的互斥操作(如DDL、LOCK TABLE等),会频繁发生操作的会话被其他会话阻塞的问题,给用户带来很大的困扰。 针对以上问题,华为云RDS for MySQL推出了MDL锁视图特性,可以查看数据库各会话持有和等待的元数据锁信息,用户可以有效进行系统诊断,优化自身业务,有效降低对业务影响。
  • 功能特点 表1 INNODB_ALTER_TABLE_PROGRESS表字段详解 字段 说明 THREAD_ID 线程ID QUERY ALTER TABLE SQL语句内容 START_TIME DDL开始时间 ELAPSED_TIME 已执行的时间(s) ALTER_TABLE_STAGE 当前执行的内容 STAGE_COMPLETED 已完成的工作单位 STAGE_ESTIMATED 预估的工作单位 一个DDL从开始到结束可能有下面几个阶段(ALTER_TABLE_STAGE字段的值): stage/innodb/alter table (read PK and internal sort):读取主键。 stage/innodb/alter table (merge sort):根据主键排序,这个过程可能较慢,因为会有临时文件生成。 stage/innodb/alter table (insert):将排序后的数据插入表中。 stage/innodb/alter table (log apply index):将DDL过程中客户执行的DML日志应用到本次创建/修改的索引。 stage/innodb/alter table (flush):数据刷盘。 stage/innodb/alter table (log apply table):将DDL过程中客户执行的DML日志应用到本次创建/修改的表。 stage/innodb/alter table (end):结束阶段。
  • 操作步骤 登录 对象存储服务 控制台。 在左侧导航栏中,选择“桶列表”。 在页面右上角,单击“创建桶”。 创建的桶用来存储 媒体处理 服务的媒体文件。 选择桶所属区域,输入桶名称,根据业务需要配置存储类别、桶策略等参数。 单击“立即创建”。 如果输入输出文件存放在同一个桶中,创建一次即可。否则创建两次,分别作为输入、输出桶。 表1 存储类别 存储类别 适用场景 标准存储 适用于有大量热点文件或小文件,且需要频繁访问(平均一个月多次)并快速获取数据的业务场景。 低频访问存储 适用于不频繁访问(平均一年少于12次),但需要快速获取数据的业务场景。 归档存储 适用于很少访问(平均一年一次),且对数据获取速率要求不高的业务场景。 表2 桶策略 桶策略 说明 私有 桶的所有者拥有完全控制权限,其他用户在未经授权的情况下均无访问权限。 公共读 任何用户都可以对桶内对象进行读操作,仅桶所有者可以进行写操作。 公共读写 任何用户都可以对桶内对象进行读/写/删除操作。 区域选择需要与使用的媒体处理服务的区域一致,若使用“华北-北京四”的媒体处理服务,则需要创建“华北-北京四”的桶。 如果输入文件和输出文件分别以不同的桶进行存储时,结合媒体处理服务的业务特性,推荐存储输入文件的桶设置为“低频访问存储”,存储输出文件的桶设置为“标准存储”。 配置输入文件夹。 单击步骤3中输入桶的桶名称,跳转至该桶的详情页。 界面自动跳转至“对象”页面的“对象”页签。 单击“新建文件夹”,配置媒体处理服务的输入文件夹。 图1 新建文件夹 配置输出文件夹。与步骤5类似。 单击步骤3中输出桶的桶名称,跳转至该桶的详情页。 在“对象”页面,单击“新建文件夹”,配置媒体处理服务输出文件夹。 上传音视频文件。 进入输入桶页面,单击输入文件夹的名称,进入输入文件夹路径。 单击“上传对象”,选择需要上传的视频文件。 选择上传文件的存储类别和加密方式,单击“上传”。
  • 消息通知 json格式说明 订阅事件的json消息字段如表1所示。 表1 json消息体字段说明 参数 类型 说明 event_type String 事件类型。 当前支持的取值如下: TranscodeComplete:转码完成 TranscodeStart:转码启动,排完队,正式开始转码时触发此事件 ThumbnailComplete:截图完成 RemuxComplete:转封装完成 AnimatedGraphicsComplete:生成动图完成 ParseComplete:属性解析完成 transcode_info TranscodeInfo 转码信息,仅当是转码完成事件或转码启动事件才有该字段。 thumbnail_info ThumbnailInfo 截图信息,仅当是截图事件才有该字段。 animated_graphics_info AnimatedGraphicsInfo 动图信息,仅当是生成动图事件才有该字段。 remux_info RemuxInfo 转封装信息,仅当是转封装事件才有该字段。 表2 TranscodeInfo参数说明 参数 类型 说明 task_id string 任务ID。 status tring 事件状态。 TRANSCODING:转码启动 SUCCEED:转码成功 FAILED:转码失败 create_time string 任务创建时间。 start_time string 启动时间,指任务排完对正式开始执行的时间。 end_time string 任务结束时间。 intput FileAddress 转码文件输入地址。 output FileAddress 转码文件输出地址。 description string 任务描述。 media_detail MediaDetail 转码详细信息,失败时没有该字段。 表3 MediaDetail参数说明 参数 类型 说明 features String[] 任务名称。 origin_para OriginPara 原始片源信息。 output_video_paras OutputVideoPara[] 多路输出片源信息。 output_watermark_para OutputWatermarkPara 输出水印信息。 表4 OriginPara参数说明 参数 类型 说明 duration Integer 片源时长。 file_format String 文件格式。 video Video 原始片源视频信息。 audio Audio 原始片源音频信息。 表5 Video参数说明 参数 类型 说明 width Integer 视频宽度。 height Integer 视频高度。 bitrate Integer 视频码率。 frame_rate Integer 视频帧率。 codec string 视频编码格式。 表6 Audio参数说明 参数 类型 说明 codec string 音频编码格式。 sample Integer 音频采样率。 channels Integer 音频信道。 bitrate Integer 音频码率。 表7 OutputVideoPara参数说明 参数 类型 说明 template_id Integer 输出视频对应的模板ID。 size Integer 视频大小。 pack string 视频封装格式。 video Video 输出片源视频信息。 audio Audio 输出片源音频信息。 file_name string 输出片源文件名。 conver_duration double 折算时长。 error Error 错误信息。 表8 OutputWatermarkPara参数说明 参数 类型 说明 time_duration Int32 水印时长。 表9 AnimatedGraphicsInfo参数说明 参数 类型 说明 task_id String 任务ID status String 事件状态。 SUCCEED:生成动图成功 FAILED:生成动图失败 create_time String 任务创建时间。 start_time String 任务启动时间,指任务排完对正式开始执行的时间。 end_time String 任务结束时间。 description String 任务描述,如当任务异常时,此字段为异常的具体信息。 input FileAddress 源文件信息。 output FileAddress 输出文件信息。 output_param AnimatedGraphicsOutputParam 动图输出参数。 表10 FileAddress参数说明 参数名 类型 说明 location String 对象存储桶所在区域。 bucket String 对象存储桶名。 object String 文件的存储路径。 当用于“input”时,需要指定到具体对象。 当用于“output”时,只需指定到转码结果期望存放的路径。 file_name String 文件名,仅用于“output”输出。 当指定了此参数时,输出的对象名为“object/file_name”; 当不指定此参数时,输出的对象名为“object/xxx”,其中xxx由系统指定。 表11 AnimatedGraphicsOutputParam参数说明 名称 类型 说明 format String 动图格式。目前仅支持输出GIF文件。 width Integer 输出动图的宽。 height Integer 输出动图的高。 start Integer 起始时间。 单位:毫秒。 end Integer 结束时间。 frame_rate Integer 动图帧率。 表12 ThumbnailInfo参数说明 参数 类型 说明 task_id string 任务Id。 status tring 事件状态。 SUCCEED:截图成功。 FAILED:截图失败。 create_time string 开始时间。 start_time String 启动时间,指任务排完后正式开始执行的时间。 end_time string 结束时间。 intput FileAddress 源文件地址。 output FileAddress 截图文件输出地址。 description string 任务描述。 output_file_name String 输出文件名。 thumbnail_info PicInfo[] 截图详细信息,失败时没有该字段。 表13 PicInfo参数说明 参数 类型 说明 pic_name String 截图文件名。 表14 RemuxInfo参数说明 参数 类型 说明 task_id String 任务ID。 status String 事件状态。 SUCCEED:转封装成功。 FAILED:转封装失败。 create_time String 任务创建时间。 start_time String 任务启动时间,指任务排完对正式开始执行的时间。 end_time String 任务结束时间。 description String 任务描述,如当任务异常时,此字段为异常的具体信息。 input FileAddress 源文件信息。 output FileAddress 输出文件信息。 output_param RemuxOutputParam 转封装输出参数。 表15 RemuxOutputParam参数说明 参数名 类型 说明 format String 输出格式。 取值如下: HLS MP4 segment_duration Integer 分片时长,仅当format为“HLS”时有效。 取值范围:[2,10]。 默认值: 5。 单位:秒。 父主题: 附录
  • 修订记录 发布日期 修订记录 2022-03-30 第三次正式发布。 本次更新说明如下: 新增“搬迁音视频文件至华为云VOD”章节。 2023-11-30 第二次正式发布。 本次更新说明如下: 新增“H.264和H.265高清低码帮助视频网站打造极致体验”章节 新增“MPC的视频截图能力帮助视频网站客户快速构建媒体处理平台”章节 新增“MPC的视频转封装能力帮助在线教育客户实现多终端播放视频”章节 2022-11-30 第一次正式发布。
  • 在费用中心续费 登录管理控制台。 单击“控制台”页面上方“费用”,在下拉菜单中选择“续费管理”。进入“续费管理”页面。 自定义查询条件。 可在“手动续费项”“自动续费项”“到期转按需项”“到期不续费项”页签查询全部待续费资源,对资源进行手动续费的操作。 图2 续费管理 所有需手动续费的资源都可归置到“手动续费项”页签,具体操作请参见如何恢复为手动续费。 手动续费资源。 单个续费:在资源页面找到需要续费的资源,单击操作列的“续费”。 图3 单个续费 批量续费:在资源页面勾选需要续费的资源,单击列表左上角的“批量续费”。 图4 批量续费 选择云手机的续费时长,判断是否勾选“统一到期日”,将云手机到期时间统一到各个月的某一天。确认配置费用后单击“去支付”。 图5 续费确认 进入支付页面,选择支付方式,确认付款,支付订单后即可完成续费。
  • 计费模式概述 云手机服务提供包年/包月、按需计费两种计费模式,以满足不同场景下的用户需求。 包年/包月:一种预付费模式,即先付费再使用,按照订单的购买周期进行结算。一般适用于设备需求量长期稳定的成熟业务。 按需计费:一种后付费模式,即先使用再付费,按照云手机的实际使用时长计费,秒级计费,按小时结算。按需计费模式允许您根据实际业务需求灵活地调整资源使用,无需提前预置资源,从而降低预置过多或不足的风险。一般适用于设备需求量瞬间大幅波动的场景。 表1列出了计费模式的信息两种计费模式的区别。 表1 计费模式 计费模式 包年/包月 按需计费 付费方式 预付费,按照订单的购买周期结算。 后付费,按照云手机服务实际使用时长计费。 计费周期 按订单的购买周期计费。 秒级计费,按小时结算。 适用计费项 实例规格、实例数量、购买时长。 实例规格、实例数量、使用时长。 关机计费 按订单的购买周期计费。云手机实例关机对包年/包月计费无影响。 停止计费需手动删除实例。云手机实例关机后,正常计费。 变更计费模式 不支持变更为按需计费模式。 不支持变更为包年/包月计费模式。 变更规格 不支持变更实例规格。 不支持变更实例规格。 适用场景 适用于可预估资源使用周期的场景,价格比按需计费模式更优惠。对于长期使用者,推荐该方式。 适用于计算资源需求波动的场景,可以随时开通,随时删除。 父主题: 计费模式
  • 续费相关的功能 包年/包月计费模式云手机续费相关的功能如表1所示。 表1 续费相关的功能 功能 说明 手动续费 包年/包月计费模式云手机从购买到被自动删除之前,您可以随时在KooPhone控制台为云手机续费,以延长云手机的使用时间。 在一台包年/包月计费模式云手机生命周期的不同阶段,您可以根据需要选择一种方式进行续费,具体如图1所示。 图1 云手机生命周期 云手机从购买到到期前,处于正常运行阶段,资源状态为“运行中”。 到期后,资源状态变为“已过期”。 到期未续费时,云手机首先会进入宽限期,宽限期到期后仍未续费,资源状态变为“已冻结”。 超过宽限期仍未续费将进入保留期,如果保留期内仍未续费,资源将被自动删除。 华为云根据客户等级定义了不同用户的宽限期和保留期时长。
  • 计费示例 假设您在2023/02/08 15:50:04购买了一台包年/包月云手机(规格:专业版 2核 4GB内存 16GB存储)。购买时长为一个月,并在到期前手动续费1个月,则: 第一个计费周期为:2023/02/08 15:50:04 ~ 2023/03/08 23:59:59 第二个计费周期为:2023/03/09 00:00:00 ~ 2023/04/08 23:59:59 您需要为每个计费周期预先付费,总费用=实例规格单价 * 购买时长 * 购买数量。
  • 到期后影响 图1描述了包年/包月计费模式KooPhone资源各个阶段的状态。购买后,在计费周期内资源正常运行,此阶段为有效期;资源到期而未续费时,将陆续进入宽限期和保留期。 图1 包年/包月计费模式KooPhone资源生命周期 到期预警 包年/包月计费模式KooPhone资源在到期前第7天内,系统将向用户推送到期预警消息。预警消息将通过邮件、短信和站内信的方式通知到华为云账号的创建者。 到期后影响 当您的包年/包月计费模式KooPhone资源到期未续费,首先会进入宽限期,资源状态变为“已过期”。宽限期内您可以正常访问云手机。 如果您在宽限期内仍未续费包年/包月计费模式KooPhone资源,那么就会进入保留期,资源状态变为“已冻结”,您将无法对处于保留期的包年/包月资源执行任何操作。 保留期满仍未续费或充值,那么存储在KooPhone云手机实例中的数据将被删除,数据无法恢复,对应的云手机实例将被释放。 华为云根据客户等级定义了不同用户的宽限期和保留期时长。 关于续费的详细介绍请参见续费概述。
  • 适用场景 包年/包月计费模式需要用户预先支付一定时长的费用,适用于长期、稳定的业务需求。以下是一些适用于包年/包月计费模式的业务场景: 稳定业务需求:对于长期运行且资源需求相对稳定的业务,如企业客服远程协同、日常办公等,包年/包月计费模式能提供较高的成本效益。 长期项目:对于周期较长的项目,如政务项目、云游戏策划等,包年/包月计费模式可以确保在整个项目周期内资源的稳定使用。 业务高峰预测:如果能预测到业务高峰期,如促销季、节假日等,可提前购买包年/包月资源以应对高峰期的需求,避免资源紧张。 数据安全要求高:对于对数据安全性要求较高的业务,包年/包月计费模式可确保资源的持续使用,降低因资源欠费而导致的数据安全风险。
  • 计费说明 云手机服务的计费项由云手机实例规格、实例数量、购买时长或使用时长进行计费。具体内容如表1所示。 表1 云手机服务计费项 计费项 计费项说明 适用的计费模式 计费费用 实例规格 计费因子:vCPU和内存,不同规格的实例类型提供不同的计算和存储能力。 包年/包月、按需计费 相同实例规格企业版比专业版价格更高。 实例数量 购买云手机实例的数量。 包年/包月、按需计费 总费用随着实例数量线性增加。 购买时长 包周期模式下购买云手机实例的时长。 包年/包月 总费用随着购买时长的增加线性增加。 如:包2个月的费用是包1个月的2倍。
  • 计费示例 假设您在2023/04/18 9:59:30购买了一台按需计费的云手机(规格:专业版 2核 4GB内存 16GB存储),然后在2023/04/18 10:45:46将其删除,则: 第一个计费周期为9:00:00 ~ 10:00:00,在9:59:30 ~ 10:00:00间产生费用,该计费周期内的计费时长为30秒。 第二个计费周期为10:00:00 ~ 11:00:00,在10:00:00 ~ 10:45:46间产生费用,该计费周期内的计费时长为2746秒。 在购买云手机时的“配置费用”中标出了资源的每小时价格,如果您需要核对费用,请将每小时价格除以3600,得到每秒价格。总费用=实例每秒价格 * 使用时长 * 购买数量。
  • 响应示例 状态码: 200 返回信息。 { "status" : "200", "message" : "success", "data" : [ { "id" : "1865d1ac-fa0d-468d-a18e-e05b73705f57", "callback_url" : "https://www.example.com/v1/send-resolve-status", "url_type" : 0 } ] }
  • 响应参数 状态码: 200 表2 响应Body参数 参数 参数类型 描述 status String 请求状态,固定200。 message String 状态描述。 data Array of Callback objects 回调地址列表。 表3 Callback 参数 参数类型 描述 callback_url String 回调地址。 id String 注册回调的唯一标识ID。 url_type Integer 回调类型。 0:智能信息单条发送回调 1:模板状态回调 2:智能信息批量发送回调 状态码: 400 表4 响应Body参数 参数 参数类型 描述 error_code String 结果状态码。 error_msg String 结果详情。 error_message Object 结果详情。 说明: 该字段在以后可能会废弃,建议使用error_msg字段对接。 状态码: 500 表5 响应Body参数 参数 参数类型 描述 error_code String 结果状态码。 error_msg String 结果详情。 error_message Object 结果详情。 说明: 该字段在以后可能会废弃,建议使用error_msg字段对接。
  • 响应参数 状态码: 200 表2 响应Body参数 参数 参数类型 描述 status String 请求状态,固定200。 message String 状态描述。 data VmsCallBackList object 响应数据。 表3 VmsCallBackList 参数 参数类型 描述 callbacks Array of VmsCallBack objects 回执接口列表。 表4 VmsCallBack 参数 参数类型 描述 url_type Integer 回调类型。 0:发送状态回执 1:上行消息回执 callback_url String 回调地址。 remark String 备注。 状态码: 400 表5 响应Body参数 参数 参数类型 描述 error_code String 结果状态码。 error_msg String 结果详情。 状态码: 500 表6 响应Body参数 参数 参数类型 描述 error_code String 结果状态码。 error_msg String 结果详情。
  • 响应示例 状态码: 200 返回信息。 { "status" : "200", "message" : "success", "data" : { "callbacks" : [ { "url_type" : 1, "callback_url" : " https://www.example.com/vms/reply-callback", "remark" : "上行消息回执" }, { "url_type" : 0, "callback_url" : " https://www.example.com/vms/send-callback", "remark" : "发送状态回执" } ] } }
  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 data Callback object 注册详情。 status String 请求状态,固定200。 message String 状态描述。 表4 Callback 参数 参数类型 描述 callback_url String 回调地址。 id String 注册回调的唯一标识ID。 url_type Integer 回调类型。 0:智能信息单条发送回调 1:模板状态回调 2:智能信息批量发送回调 状态码: 400 表5 响应Body参数 参数 参数类型 描述 error_code String 结果状态码。 error_msg String 结果详情。 error_message Object 结果详情。 说明: 该字段在以后可能会废弃,建议使用error_msg字段对接。 状态码: 500 表6 响应Body参数 参数 参数类型 描述 error_code String 结果状态码。 error_msg String 结果详情。 error_message Object 结果详情。 说明: 该字段在以后可能会废弃,建议使用error_msg字段对接。
  • 响应示例 状态码: 200 返回信息。 { "status" : "200", "message" : "success", "data" : { "id" : "18d1bcad-4d13-4db1-bcdd-32565457cccc", "callback_url" : "https://www.example.com/v1/send-resolve-status" } }
  • 请求示例 注册回执-智能信息单条发送回执 https://koomessage.myhuaweicloud.cn/v1/aim/callbacks { "callback_url" : "https://www.example.com/v1/send-resolve-status", "url_type" : 0 } 注册回执-智能信息模板状态回执 https://koomessage.myhuaweicloud.cn/v1/aim/callbacks { "callback_url" : "https://www.example.com/v1/template-status", "url_type" : 1 } 注册回执-智能信息批量发送回执 https://koomessage.myhuaweicloud.cn/v1/aim/callbacks { "callback_url" : "https://www.example.com/v1/send-resolve-status", "url_type" : 2 }
  • 请求参数 表1 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。通过调用 IAM 服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 最小长度:0 最大长度:2000 Content-Type 是 String 请求体参数类型,该字段必须设置为:application/json。 表2 请求Body参数 参数 是否必选 参数类型 描述 callback_url 是 String 回调地址。 说明: 必须http或https开头,建议使用https 支持 域名 或公网IP回调地址,不支持私网IP回调地址 最小长度:1 最大长度:1000 url_type 否 Integer 回调类型。 0:智能信息单条发送回调 1:模板状态回调 2:智能信息批量发送回调 缺省值:0
  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 status String 请求状态,固定200。 message String 状态描述。 状态码: 400 表4 响应Body参数 参数 参数类型 描述 error_code String 结果状态码。 error_msg String 结果详情。 状态码: 500 表5 响应Body参数 参数 参数类型 描述 error_code String 结果状态码。 error_msg String 结果详情。
共100000条