活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 安全隔离版OpenClaw NEW OpenClaw云服务器专属“龙虾“套餐低至1.5折起
  • 聚力AI赋能 天翼云大模型专项 大模型特惠专区·Token Plan 轻享包低至9.9元起
  • 青云志云端助力计划 NEW 一站式科研助手,海外资源安全访问平台,助力青年翼展宏图,平步青云
  • 企业出海解决方案 NEW 助力您的业务扬帆出海,通达全球!
  • 天翼云信创专区 NEW “一云多芯、一云多态”,国产化软件全面适配,国产操作系统及硬件芯片支持丰富
  • 中小企业服务商合作专区 国家云助力中小企业腾飞,高额上云补贴重磅上线
  • 云上钜惠 爆款云主机全场特惠,2核4G只要1.8折起!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

息壤智算

领先开放的智算服务平台,提供算力、平台、数据、模型、应用“五位一体”智算服务体系,构建全流程的AI基础设施能力
AI Store
  • 算力市场
  • 模型市场
  • 应用市场
公共算力服务
  • 裸金属
  • 定制裸金属
训推服务
  • 模型开发
  • 训练任务
  • 服务部署
星辰TokenHub
  • 模型广场
  • 体验中心
  • 服务接入
应用托管
  • 应用实例
科研助手
  • 科研智能体
  • 科研服务
  • 开发机
  • 并行计算
大模型
  • DeepSeek-V4-Flash
  • GLM-5.1
  • Qwen3.5-122B-A10B
  • DeepSeek-V3.2(旗舰版)
  • GLM-5(正式版)
智算一体机
  • 智算一体机
智能体引擎
  • 智能体引擎
可信数据空间
  • 可信数据空间
模型适配专家服务
  • 模型适配专家服务
算力服务商
  • 入驻算力服务商

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入AI Store公有云生态专区智云上海应用生态专区
建站工具
  • 新域名服务
  • SSL证书
  • 翼建站
企业办公
  • 智教云电脑
  • WPS 365 天翼云版
灾备迁移
  • 云管家2.0
  • 翼备份(SaaS版)
  • 琥珀数据压缩归档服务

定价

协助您快速了解云产品计费模式、价格详情,轻松预估上云成本
价格计算器
  • 动态测算产品价格
定价策略
  • 快速了解计费模式

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
天翼云培训认证
  • 天翼云学堂
天翼信创云专区
  • 信创云专区
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
培训与认证
  • 天翼云学堂
  • 天翼云认证
开源社区
  • 魔乐社区
  • OpenTeleDB

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 服务保障
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家
我要反馈
  • 建议与反馈
  • 用户体验官
信息公告
  • 客户公告

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2026智能云生态大会
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 息壤智算
  • 产品
  • 解决方案
  • 应用商城
  • 定价
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心
      云服务备份_相关内容
      • 停止实例
        GPU云主机作为弹性云主机的一类实例规格,其关机操作与弹性云主机保持一致。 操作场景 关机操作可以将GPU云主机从运行状态切换为关机状态,以进行维护等操作。 使用须知 按需付费的弹性云主机支持节省关机和普通关机两种计费模式(节省关机目前仅部分资源池支持)。 节省关机模式下,计算资源 (CPU、内存、GPU)不再收费,其余收费的资源正常计费,如系统盘、数据盘、带宽等,且再次开机后不会导致内网IP或弹性公网IP地址变更。 由于计算资源被回收,节省关机模式下,再次开机时可能因为资源不足导致启动失败,您可以稍后尝试再次开机或者尝试变配为其他规格,如一直没有可用资源,云主机有一直不能开机的风险。 如下场景不支持节省关机 所开通的云主机为包周期计费模式 已经加入主机组的云主机 已经加入云主机快照、云主机备份策略的云主机 注意 按量付费云主机的计费规则详见:按量计费模式弹性云主机购买指南计费模式 天翼云 (ctyun.cn) 操作步骤 1. 登录控制中心。 2. 单击控制中心顶部的,选择“地域”。 3. 选择“计算 > 弹性云主机”。 4. 根据实际需求对云主机进行关机。 1. 对单台云主机进行关机操作:在云主机列表中,选择需要关机的云主机,点击云主机列表左上角的关机操作按钮。 2. 对多台云主机进行关机操作:在云主机列表中,选择需要关机的多台云主机,点击云主机列表左上角的关机操作按钮。 5. 在关机弹窗中,设置关机方式和模式,并确认操作是否正确,无误后点击确定。 设置 说明 关机方式 关机:正常关机流程。但为避免关机失败,当您选择关机时,普通关机超时会自动执行强制关机操作。 强制关机:等同于断电处理,可能丢失云主机操作系统中未写入磁盘的数据。 关机模式 普通关机模式:普通关机后保留计算、存储、网络资源。 节省关机模式:节省关机后,计算资源(CPU、内存、GPU)均被释放且不计费,其余网络、存储资源继续保留并收费。 注意 请注意云主机状态的说明:如果云主机在中间状态停留超过30分钟(如启动中、停止中、重启中),表示可能出现异常情况,请及时提交工单以寻求进一步处理。
        来自:
        帮助文档
        GPU云主机
        用户指南
        管理GPU云主机
        停止实例
      • 功能特性
        本节介绍云安全中心支持的功能。 云安全中心系统主要包含安全态势、资产中心、风险管理、威胁运营、分析中心、编排响应、报表中心、集成配置以及数据源监控等功能。 安全态势 依托接入云安全中心的数据,提供统一可视化界面展示网页业务的整体安全状态。 资产中心 各类资产集中展示,全面汇集资产情况。 风险管理 资产风险信息清晰明确,定期更新资产漏洞、弱口令等信息。 威胁运营 对威胁全方位管理,提供告警概览、告警管理以及威胁检测等功能,可实现各类告警灵活定制。 分析中心 提供日志以及原始告警灵活查询,提供多种分析专题,为用户多角度呈现数据态势。 编排响应 是企业内部定制或者沉淀的知识经验,也是安全应急响应通用告警处理的“模板”。不论是自动化的编排,还是人工的编排,都可以通过“安全剧本”来进行表述。 报表中心 通过周期性的报表任务和可定制的报表模板承载各类个性化报表的展示和生成。 集成配置 数据集成一键配置,实现所配即所得。 数据源监控 为用户提供各类数据源的展示和基本信息统计。
        来自:
        帮助文档
        云安全中心
        产品介绍
        功能特性
      • 续订云电脑下单v3
        接口功能介绍 续订云电脑下单。 根据云电脑ID列表,提交续订订单。 接口约束 无 URI POST /v3/desktop/batch/renew 路径参数 无 Query参数 参数 是否必填 参数类型 说明 示例 下级对象 regionId 是 String 资源池ID。 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 请求参数 请求头header参数 无 请求体body参数 参数 是否必填 参数类型 说明 示例 下级对象 cycleType 是 String 周期类型。取值范围: Month:按月。 cycleCnt 是 Integer 周期数。取值范围:136。 desktopOidList 是 Array of Strings 云电脑ID列表,可设置一个或多个,最多10个 ["D0026050601561088"] autoPay 否 Boolean 是否自动支付,默认false。取值范围: true:是(需账号有足够金额) false:否 响应参数 参数 参数类型 说明 示例 下级对象 statusCode Integer 状态码。可能值: 800:请求成功。 900:请求失败。 800 error String 错误码。 ECPC1000 message String 提示信息。 OK. returnObj Object 返回数据对象 returnObj 表 returnObj 参数 参数类型 说明 示例 下级对象 newOrderNo String 新订单号。 20260506110254550451 submitted Boolean 是否提交成功。 true totalPrice Object 总价格。 totalPrice newOrderId String 新订单ID。 31e568f87703492b9be31d474f788152 errorMessage String 错误信息。
        来自:
        帮助文档
        天翼云电脑(政企版)
        API参考
        API
        2023-10-30
        云电脑
        续订云电脑下单v3
      • 【下线】2026年6月30日起关系数据库MySQL版下线I类型资源池部分openAPI接口
        本文主要介绍关系数据库MySQL版下线I类型资源池部分openAPI接口的原因、影响和建议。 原因 由于产品持续迭代更新,部分openAPI接口在功能使用上存在一定的局限性,为提升服务体验,天翼云关系数据库MySQL版计划于2026年6月30日下线I 类型资源池的部分OpenAPI接口。 影响 资源池范围 :北京5、内蒙古6、石家庄20、杭州2、九江、南京3、上海7、芜湖2、郴州2、佛山3、衡阳3、武汉4、乌鲁木齐4、乌鲁木齐27、西安3、西安4、西安5、贵州3、重庆2、帆豫智联、西宁2等I 类型资源池。 下线openAPI接口范围: 除如下11个高频使用接口予以保留外,共计下线126个接口: 注意 保留的11个接口仅接口文档下线,不影响存量使用。 序号 openAPI中文名称 openAPI URL 1 查询RDS备份信息列表 /v1/backup/backupconflist 2 查询RDS实例的价格 /v1/openapi/order/orderprice 3 查询可用区资源 /v1/openapi/instance/describeavailablezones 4 查询资源池信息 /v1/openapi/instance/region 5 查询地域信息 /v1/openapi/instance/describeregions 6 查询节点列表 /v1/openapi/instance/querynodelist 7 查询实例资源信息 /v1/openapi/instance/resource 8 查询节点列表 /v1/openapi/instance/querynodelist 9 查询可售卖资源 /v1/openapi/instance/describeavailableresource 10 查询实例列表 /v1/openapi/instance/instancelist 11 获取备份任务列表 /v2/openapi/backup/list
        来自:
        帮助文档
        关系数据库MySQL版
        产品公告
        【下线】2026年6月30日起关系数据库MySQL版下线I类型资源池部分openAPI接口
      • 重启实例
        本章节会介绍如何重启实例。 操作场景 通常出于维护目的,您可能需要重启数据库实例。例如:对于某些运行参数修改,需要重启单个实例使之生效。您可通过控制台对主实例和只读实例执行重启操作。 重启实例需要同时满足以下要求: 实例为可用状态。 未在执行备份或创建只读副本任务。 如果数据库实例未处于“正常”状态,则无法重启该实例。您的数据库可能会由于几个原因而不可用,例如,正在进行备份或以前请求的修改操作。 重启数据库实例会重新启动数据库引擎服务。重启数据库实例将导致短暂中断,在此期间,数据库实例状态将显示为“重启中”。 重启过程中,实例将不可用。重启后实例会自动释放内存中的缓存,请注意对业务进行预热,避免业务高峰期出现阻塞。 操作步骤 步骤1 登录管理控制台。 步骤2 单击管理控制台左上角的,选择区域和项目。 步骤3 选择“数据库 > 关系型数据库”。进入关系型数据库信息页面。 步骤4 在“实例管理”页面,选择指定的主实例,或者单击展开只读实例,单击“更多 > 重启实例”。 您也可以在“实例管理”页面单击目标实例名称,进入“基本信息”页面。在页面右上角,单击“重启实例”。 重启实例时,如果是主备实例,对应的备实例也会被同步重启。 步骤5 在“重启实例”弹框,单击“是”重启实例。 步骤6 稍后刷新实例列表,查看重启结果。如果实例状态为“正常”,说明实例重启成功。
        来自:
        帮助文档
        关系数据库MySQL版
        用户指南
        实例管理
        重启实例
      • 产品功能
        媒体存储为客户提供丰富的数据管理、数据处理、数据安全的产品能力。 块存储 产品能力 功能说明 接入方式 支持iSCSI接入方式。 块空间管理 支持通过控制台管理块设备资源,包括创建、扩容、删除等操作。 鉴权管理 可通过控制台管理文件资源访问权限,接入使用资源时进行鉴权。 文件存储 产品能力 功能说明 接入方式 提供NFS、CIFS两种类型接口,支持NFSV4.0、SMB2、SMB3协议。 文件空间管理 支持通过控制台管理文件资源,包括创建、扩容、删除等操作。 鉴权管理 可通过控制台管理文件资源访问权限,接入使用资源时进行鉴权。 对象存储 产品能力 功能说明 对象管理 支持文件的上传/分片上传/追加上传、下载、删除、复制、前缀搜索、移动功能、追加上传支持整个对象内容MD5计算、可自定义元数据。 对象标签 通过对象(Object)标签功能,对Object进行分类管理,比如列举指定标签的Object、对指定标签的Object配置统一的生命周期。 跨域资源共享 通过桶上配置跨域规则,允许或禁止某些网站的跨域请求。 生命周期 对象存储支持按照过期天数等灵活的策略配置生命周期管理机制。 镜像回源 通过镜像回源功能,当请求者向存储桶(Bucket)请求不存在的文件时,从回源规则设置的源站获取目标文件。 仅部分资源池支持,具体可参考:资源池与区域节点。如需使用,可联系客户经理或提交工单申请。 桶清单 通过桶清单功能,定时生成桶内指定文件(Object)的数量、大小、存储类型、加密状态的清单信息,并保存到指定Bucket。 仅部分资源池支持,具体可参考:资源池与区域节点。如需使用,可联系客户经理或提交工单申请。 桶标签 通过存储桶(Bucket)的标签功能, 对 Bucket 进行分类管理,比如列举带有指定标签的Bucket。 仅部分资源池支持,具体可参考:资源池与区域节点。如需使用,可联系客户经理或提交工单申请。 文件解压缩 通过压缩包解压规则,当上传满足条件的压缩包文件时,服务将自动解压该压缩包后,将文件保存到Bucket中。 仅部分资源池支持,具体可参考:资源池与区域节点。如需使用,可联系客户经理或提交工单申请。 访问权限 支持基于资源的访问权限策略,包括Bucket ACL、Object ACL、 Bucket Policy。 防盗链 可通过是否允许空Referer或黑白名单设置,校验访问账号内资源操作的合法性。 主子账号 可基于子账号进行资源访问与管理授权。 仅部分资源池支持,具体可参考:资源池与区域节点。如需使用,可联系客户经理或提交工单申请。 STS角色管理 支持STS临时凭证,可对其他用户颁发临时凭证,无需透露owner的AKSK。 仅部分资源池支持,具体可参考:资源池与区域节点。如需使用,可联系客户经理或提交工单申请。 合规保留 媒体存储以“不可删除、不可篡改”方式保存和使用数据。 仅部分资源池支持,具体可参考:资源池与区域节点。如需使用,可联系客户经理或提交工单申请。 版本控制 针对Object的覆盖和删除操作将会以版本的形式保存下来,可将 Object 恢复至指定的历史版本。 仅部分资源池支持,具体可参考:资源池与区域节点。如需使用,可联系客户经理或提交工单申请。 服务端加密 媒体存储可对收到的文件进行加密,再保存加密后的文件,用户下载文件时,服务自动将加密文件解密后返回给用户。 仅部分资源池支持,具体可参考:资源池与区域节点。如需使用,可联系客户经理或提交工单申请。 存储桶复制 支持跨不同存储区域或同一存储区域的Bucket 自动、异步(近实时)复制对象(Object)。 仅部分资源池支持,具体可参考:资源池与区域节点。如需使用,可联系客户经理或提交工单申请。 数据迁移 支持多种数据迁移能力,可以满足客户多种数据迁移场景,包括存储桶迁移、跨账号迁移、跨云数据迁移。 事件通知 当资源发生变动时,用户可及时接收通知消息。 仅部分资源池支持,具体可参考:资源池与区域节点。如需使用,可联系客户经理或提交工单申请。 日志存储 通过日志存储功能,将操作日志按照固定的命名规则,以5分钟为单位写入指定的Bucket。 仅部分资源池支持,具体可参考:资源池与区域节点。如需使用,可联系客户经理或提交工单申请。 告警管理 支持告警规则管理,包括添加告警规则,管理告警规则,查看告警消息等。 仅部分资源池支持,具体可参考:资源池与区域节点。如需使用,可联系客户经理或提交工单申请。 自定义域名 通过自定义域名绑定功能,可以通过已绑定的自定义域名访问存储桶内的文件。 仅部分资源池支持,具体可参考:资源池与区域节点。如需使用,可联系客户经理或提交工单申请。 操作日志 支持查询指定时间内在控制台操作的相关日志。 实时日志查询 支持查询通过API或SDK操作对象存储的相关日志。目前实时日志查询为内测功能,如需使用,可联系客户经理或提交工单申请。 用量统计 统计并支持查询存储空间、流量与请求次数用量信息。 图片处理 提供的产品自带图片处理功能,包括基础图片转换、水印功能、原图保护、视频截帧、数据处理持久化保存等功能。 仅部分资源池支持,具体可参考:资源池与区域节点。如需使用,可联系客户经理或提交工单申请。 视频截帧 对象存储内置提供视频截帧功能,可截取出H264视频文件中的指定位置内容的对应图片。 仅部分资源池支持,具体可参考:资源池与区域节点。如需使用,可联系客户经理或提交工单申请。 工具指南 提供图形化客户端工具以及网络测速工具。 API接口 提供REST形式的访问接口,可直接调用相应接口完成操作。 SDK 对媒体存储提供的REST API进行的封装,可直接调用SDK提供的接口函数进行使用。
        来自:
        帮助文档
        媒体存储
        产品介绍
        产品功能
      • CoSpace智协空间
        方式二:已有云电脑用户切换镜像 1. 登录云电脑客户端,进入云电脑桌面; 2. 进入云电脑顶部工具栏控制中心设置系统重装更换系统界面; 3. 点击“基础镜像”或“分享镜像”中,找到“OpenClaw“关键词的专属镜像进行切换; 4. 完成镜像重装后即可使用。 注意 系统重装将清除安装在系统盘(C盘)的程序、数据及专线网络配置信息,请注意提前备份重要数据。 使用指引 桌面端使用 功能入口 1. 在专属镜像桌面中打开云智助手客户端,在侧边栏找到「CoSpace智协空间」入口; 2. 点击该入口后,将在当前页面内直接跳转至CoSpace功能主页面。 对话交互 1. 点击功能页面内的对话区域,可直接输入问题或指令进行问答交互; 2. 对话输入框下方默认显示三条高频预设任务,点击任意一条即可快速执行; 3. 支持手动输入自定义对话内容和智控指令。
        来自:
        帮助文档
        天翼云电脑(政企版)
        AI新特性
        云智助手
        使用模式用户指南
        CoSpace智协空间
      • 创建桶
        参数 描述 复制桶配置 可选。单击“选择源桶”后,可以在桶列表中选择一个源桶。返回后页面会自动复制源桶的以下配置信息:区域 / 数据冗余策略 / 存储类别 / 桶策略 / 服务端加密 / 归档数据直读 / 企业项目 / 标签。 选择后您仍可以根据业务情况对复制的配置信息进行部分或全部更改。 区域 桶所属区域。请选择靠近您业务的区域,以降低网络时延,提高访问速度。桶创建成功后,不支持变更区域,请谨慎选择。 桶名称 桶的名称。需全局唯一,不能与已有的任何桶名称重复,包括其他用户创建的桶。桶创建成功后,不支持修改名称,创建时,请设置合适的桶名。OBS中桶按照DNS规范进行命名,DNS规范为全球通用规则, 其具体命名规则如下: 需全局唯一,不能与已有的任何桶名称重复,包括其他用户创建的桶。用户删除桶后,立即创建同名桶或并行文件系统会创建失败,需要等待30分钟才能创建。 长度范围为3到63个字符,支持小写字母、数字、中划线()、英文句号(.)。 禁止两个英文句号(.)相邻,禁止英文句号(.)和中划线()相邻,禁止以英文句号(.)和中划线()开头或结尾。 禁止使用IP地址。 说明 当用户使用虚拟主机方式通过HTTPS协议访问OBS时,如果桶名称中包含英文句号(.),会导致证书校验失败。所以该场景下,建议桶名称不要使用英文句号(.) 数据冗余存储策略 多AZ存储:数据冗余存储至多个可用区(AZ),可靠性更高。 单AZ存储:数据仅存储在单个可用区(AZ),成本更低。 注意 请根据业务情况提前规划数据冗余存储策略,桶一旦创建成功,数据冗余存储策略就确定了,后续无法更改。 归档存储的桶不支持多AZ功能。 默认存储类别 桶的存储类别。不同的存储类别可以满足客户业务对存储性能、成本的不同诉求。 标准存储:适用于有大量热点文件或小文件,且需要频繁访问(平均一个月多次)并快速获取数据的业务场景。 低频访问存储:适用于不频繁访问(平均一年少于12次),但需要快速获取数据的业务场景。 归档存储:适用于很少访问(平均一年一次),且对数据获取速率要求不高的业务场景。 桶策略 桶的读写权限控制。 私有:除桶ACL授权外的其他用户无桶的访问权限。 公共读:任何用户都可以对桶内对象进行读操作。 公共读写:任何用户都可以对桶内对象进行读/写/删除操作。 服务端加密 选择“SSEKMS”加密。加密密钥类型您可以选择“默认密钥”,您上传的对象将使用当前区域的默认密钥进行加密,如果您没有默认密钥,系统将会在首次上传对象时自动为您创建,您也可以选择“自定义密钥”,通过单击“创建KMS密钥”进入数据加密服务页面创建自定义密钥,然后通过KMS密钥的下拉框选中您创建的KMS密钥。若桶已开启了默认加密,上传对象可以继承桶的KMS加密特性。 归档数据直读 通过归档数据直读,您可以直接下载存储类别为归档存储的对象, 而无需提前恢复。 企业项目 将桶加入到企业项目中统一管理。请先在企业项目界面完成企业项目的创建,默认为default企业项目。在企业项目界面创建企业项目,创建用户组并将用户加入到该用户组,然后将用户组添加到该企业项目。这时用户组内用户将获得用户组授权的该企业项目下的桶和对象的操作权限。 说明 仅企业帐号能够配置企业项目 标签 可选。标签用于标识OBS中的桶,以此达到对OBS中的桶进行分类的目的。OBS以键值对的形式来描述标签,每个标签有且只有一对键值。
        来自:
        帮助文档
        对象存储 OBS
        快速入门
        创建桶
      • 恢复到自建MySQL数据库
        步骤一:在RDS for MySQL下载全量备份文件 RDS for MySQL实例会在固定时间进行自动全备任务,也可以由您指定时间进行手动全备任务,其生成的.qp文件支持下载以及在本地进行恢复自建数据库。 1. 您可以在RDS界面单击实例名称,选择“备份恢复 > 全量备份 > 下载”,下载全量备份文件。 2. 通过文件传输工具(例如WinSCP)将全备文件上传到本地MySQL库所在的Linux设备。 步骤二:在本地MySQL安装qpress和XtraBackup 方式一:手动安装 1. 下载正确版本的qpress和XtraBackup,也可以根据下表进行下载。下载完成后将安装包上传到本地MySQL库所在的Linux设备。 − 下载qpress工具: − 下载Percona XtraBackup工具: 对于MySQL 5.6和5.7版本,下载XtraBackup 2.4.9及其以上版本。 对于MySQL 8.0版本,下载XtraBackup 8.0及其以上版本。 表 下载示例 工具 下载实例 MySQL 5.6 mysql5.6.51linuxglibc2.12x8664.tar.gz MySQL 5.7 mysql5.7.38linuxglibc2.12x8664.tar.gz MySQL 8.0 mysql8.0.26linuxglibc2.12x8664.tar qpress qpress111.el7.x8664.rpm Percona XtraBackup XtraBackup 2.4.9(MySQL 5.6、5.7) Percona XtraBackup XtraBackup 8.0(MySQL 8.0) 2. 安装qpress rpm包。以Enterprise Linux 7(CentOS 7, RHEL 7, Rocky Linux 7, AlmaLinux 7)操作系统为例。 rpm ivh qpress111.el7.x8664.rpm 3. 解压Xtrabackup包,并改名为“xtrabackup”。 tar zxvf perconaxtrabackup2.4.9Linuxx8664.tar.gz mv perconaxtrabackup2.4.9Linuxx8664 xtrabackup 4. xtrabackup添加到环境变量。 plaintext echo "export PATH$PATH:/usr/local/xtrabackup/bin" >> /etc/profile mv xtrabackup/ /usr/local/ source /etc/profile 方式二:wget安装 1. 安装qpress rpm包。 wget rpm ivh qpress111.el7.x8664.rpm 2. 安装Percona XtraBackup。 − MySQL 5.6、5.7,以下载并安装Percona XtraBackup 2.4.9为例 wget rpm ivh perconaxtrabackup242.4.91.el7.x8664.rpm nodeps force − MySQL 8.0,以下载并安装Percona XtraBackup 8.0为例 wget rpm ivh perconaxtrabackup808.0.3226.1.el7.x8664.rpm nodeps force 步骤三:使用备份文件恢复数据到自建MySQL 1. 创建一个临时目录“backupdir”。 mkdir backupdir 2. 解压全备文件。 说明 解压全备文件到临时目录“backupdir”前,需要保证临时目录下为空,再进行解压,避免恢复异常。 − MySQL 5.6、5.7 xbstream x p 4 < ./全备文件.qp C ./backupdir/ innobackupex parallel 4 decompress ./backupdir − MySQL 8.0 xbstream x p 4 < ./全备文件.qp C ./backupdir/ xtrabackup parallel 4 decompress targetdir./backupdir 3. 删除qp文件。 find ./backupdir/ name '.qp' xargs rm f 4. 应用redo日志。 − MySQL 5.6、5.7 innobackupex applylog ./backupdir − MySQL 8.0 xtrabackup prepare targetdir./backupdir 5. 备份数据。 a. 停止MySQL数据库服务。 service mysql stop 如果是MySQL 5.7,需执行如下命令停止MySQL数据库服务: /bin/systemctl stop mysqld.service b. 备份原来的数据库目录。 mv /usr/local/mysql/data /usr/local/mysql/databak mkdir /usr/local/mysql/data c. 创建新的数据库目录并修改目录权限。 chown mysql:mysql /usr/local/mysql/data 6. 恢复数据到自建库,并修改目录权限。 执行该步骤前,需要清空自建库的“data”目录,参考5.b。 − MySQL 5.6、5.7 innobackupex defaultsfile/etc/my.cnf copyback ./backupdir chown R mysql:mysql /usr/local/mysql/data − MySQL 8.0 xtrabackup defaultsfile/etc/my.cnf copyback targetdir./backupdir chown R mysql:mysql /usr/local/mysql/data 说明 命令中的相对路径(./backupdir)可替换成绝对路径。 “defaultsfile”为MySQL配置文件位置,您可以根据实际情况进行修改。 7. 启动数据库。 service mysql start 如果是MySQL 5.7,需执行如下命令启动数据库: /bin/systemctl start mysqld.service 8. 登录数据库,查看数据恢复结果。 show databases
        来自:
        帮助文档
        关系数据库MySQL版
        用户指南
        数据恢复
        恢复到自建MySQL数据库
      • 基本使用类
        本节介绍了查看存储容量的方法。 查看TaurusDB的存储容量 TaurusDB是存储计算分离架构,数据存储在共享存储系统中,共享存储容量可以通过管理控制台看到,详情请参考如下步骤操作,数据每30分钟更新一次。 操作步骤 步骤 1 登录管理控制台。 步骤 2 单击管理控制台右上角的,选择Region。 步骤 3 在页面左上角单击,选择“数据库 > 云数据库TaurusDB”。 步骤 4 在实例列表中,单击目标实例名称,进入实例的“基本信息”页面。 步骤 5 在基本信息页面的“存储“存储/备份空间”模块可以看到当前实例占用的共享存储容量。 说明 TaurusDB存储容量的计算与传统MySQL有一定的区别,与传统MySQL使用(数据大小+索引大小+空闲空间)计算的容量数据会有一定的差别。 如果要查询精确的存储使用量,可以使用管理控制台查询或者连接TaurusDB数据库后,执行show spaceusage;命令查看当前数据使用的存储容量,该值为精确值,非估算值。 图 查看存储容量 共享存储 显示的使用状况就是该实例购买的包周期的共享存储容量及目前数据已占用的容量。 如果已使用空间超过购买的共享存储容量,TaurusDB会自动扩容,无需担心磁盘满带来的业务问题。 自动扩容的空间会按照按需使用的收费标准收取,建议超出后使用磁盘容量变更功能扩展包周期的存储容量。 备份空间: 系统会赠送一份与包周期或按需存储容量相同大小的备份空间。 执行show spaceusage;命令查看存储容量,其值等于表数据、表预分配空间、分区预分配空间、Binlog、Redolog和Undolog之和,详情见下表: 条目 查看方式 说明 表数据 select sum(datalength+indexlength+datafree) from informationschema.tables; 传统MySQL的容量计算方式,该语句依赖统计数据的精准度,在统计数据未更新时可能会有偏差。 表预分配空间 select count() from informationschema.tables; 每张表会预分配4MB空间,该语句查询出表的数量乘以4MB就是总的表预分配空间。 分区预分配空间 select count() from INFORMATIONSCHEMA.PARTITIONS where PARTITIONNAME is not null; 每个分区会预分配4MB空间,该语句查询出分区的数量乘以4MB就是总的分区预分配空间。 Binlog show binary logs; 将所有binlog的文件大小相加。 Redolog show lsninfo; flushedtodisklsn truncatelsn Undolog 无法直接查看 需要时可咨询客服人员。
        来自:
        帮助文档
        云数据库TaurusDB
        故障排除
        基本使用类
      • 数据迁移类
        执行MySQL数据迁移时,如何正确配置lowercasetablenames参数? lowercasetablenames配置参数会影响数据库表在系统中的存储以及对比方式,具体可参照MySQL官方文档。 < < 为确保在使用DTS执行MySQL的数据迁移时,数据一致性得到保障,用户需要将源库和目标库的lowercasetablenames设置成一样。 在预检查阶段,DTS如果发现源库、目标库的lowercasetablenames值不一致,会产生错误提示,用户需按照指引修改配置项。 数据库全量自动备份期间适合进行DTS全量迁移操作吗? 不适合。 数据库全量自动备份期间,若进行DTS全量迁移,可能会导致数据库备份操作因加锁失败而失败,同时备份操作又会影响DTS迁移的效率。因此,需要客户合理安排,将DTS全量迁移操作与数据库自动全量备份操作在时间上错开,以避免交叉影响。
        来自:
        帮助文档
        数据传输服务DTS
        常见问题
        数据迁移类
      • 删除或退订云电脑v3
        接口功能介绍 当前支持操作单实例、资源包来源的云电脑 接口约束 无 URI POST /v3/desktop/batch/delete 路径参数 无 Query参数 参数 是否必填 参数类型 说明 示例 下级对象 regionId 是 String 资源池ID。 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 请求参数 请求头header参数 无 请求体body参数 参数 是否必填 参数类型 说明 示例 下级对象 desktopList 是 Array of Objects 云电脑列表,可设置一个或多个,最多 10 个 desktopList 表 desktopList 参数 是否必填 参数类型 说明 示例 下级对象 desktopOid 是 String 云电脑ID XXXXXXXXXXXXX6925 响应参数 参数 参数类型 说明 示例 下级对象 statusCode Integer 状态码。可能值: 800:请求成功。 900:请求失败。 800 error String 错误码。 ECPC1000 message String 提示信息。 OK. returnObj Object 返回数据结构体。 returnObj 表 returnObj 参数 参数类型 说明 示例 下级对象 errorMessage String 错误信息(仅创建单独付费云电脑有效)。 batchOrderPlacementResults Array of Objects 订单信息(仅创建单独付费云电脑有效)。 batchOrderPlacementResults 表 batchOrderPlacementResults 参数 参数类型 说明 示例 下级对象 submitted Boolean 提交结果。 errorMessage String 错误信息。 orderPlacedEvents Array of Objects 订单信息。 orderPlacedEvents 表 orderPlacedEvents 参数 参数类型 说明 示例 下级对象 newOrderNo String 订单号。 submitted String 提交结果。 totalPrice String 总价格。 newOrderId String 订单id。 errorMessage String 错误信息。
        来自:
        帮助文档
        天翼云电脑(政企版)
        API参考
        API
        2023-10-30
        云电脑
        删除或退订云电脑v3
      • P1型云主机如何安装NVIDIA驱动?
        本节介绍了P1型云主机如何安装NVIDIA驱动的解决办法。 前提条件 已绑定弹性IP。 已根据下表,下载对应操作系统所需驱动的安装包。 NVIDIA驱动下载 需要下载的驱动 安装包名称 下载地址 ::: GPU驱动 NVIDIALinuxx8664375.66.run Result PASS 结束
        来自:
        帮助文档
        镜像服务 IMS
        常见问题
        操作系统类
        P1型云主机如何安装NVIDIA驱动?
      • 使用规范
        本节介绍了使用规范相关内容。 实例规格 建议生产环境至少使用4u8g规格。由于SQL Server使用Windows系统,引擎及系统本身需要的资源较多,2u4g不适合运行生产业务,长时间运行后可能会有系统低内存及其卡顿问题。 数据库连接 连接Microsoft SQL Server时,请使用“ip,port”的方式连接,注意连接串中间为逗号。 不建议使用服务器名字连接。 应用连接数据库时建议要有重试机制,当数据库发生容灾或者断连时,应用可以通过重试及时恢复连接。 数据库迁移 迁移上云完成后,需要进行以下检查: 需要检查权限完整性。权限会影响对于数据库的方案,迁移仅会完成数据恢复,数据库用户恢复,登录名等其他服务级权限需要重新创建,并且关联数据库账户。 需要对索引进行重建。由于迁移完成后数据文件的物理环境发生了改变,数据库索引会失效,需要对索引进行重建,否则可能会导致数据库性能有明显下降。 对比参数配置。迁移上云后RDS for SQL Server会使用云上的参数模板,需要及时对比云下参数配置和云上是否匹配。由于云下参数配置是经过长期验证,所以请及时更新云上的参数配置。 使用建议 不推荐创建加域实例,Microsoft SQL Server支持创建加域实例,加域实例的域控服务器在用户侧,用户拥有较高权限,域控服务器组策略配置会影响加入该域的机器,用户侧域控规则修改会导致数据库实例的权限安全风险增加。 单实例数据库数量不要超过100个。单实例可以承载的数据库数量跟实例规格相关,数据库数量过多会导致实例性能下降,占用Worker Thread等资源。 应用不能依赖SysAdmin权限。具有SysAdmin角色的账号有超级管理员权限,使用不当会导致数据库安全与稳定性受到威胁,云数据库不开放超级管理员权限,应用使用数据库不能依赖于此权限。 不要在系统库创建表。用户数据请创建用户自定义库存放,不要在系统库创建任何表写入数据,虽然开放了使用系统库的权限,但是任何在系统库存放的数据都是不安全的。 数据库不要打开Auto Close属性。用户库可以设置Auto Close属性,打开该属性后会导致包括建立复制关系无法建立的问题,并且该属性设置后不能正常的使用该库,强烈建议不要设置。 不要将数据库设置为Single User模式。Single User模式只允许一个Session访问数据库,会导致其他Session无法访问造成云数据库的运维问题。设置Single User模式请及时恢复到Multi User模式。 慢日志不要长时间打开。慢日志可以帮助进行慢SQL分析,但是长时间打开会导致性能损失,建议在不需要跟踪分析SQL问题时关闭慢日志。 定时重建索引。数据库在长时间使用后可能会产生较多的索引碎片,导致数据库访问性能下降,需要定时进行索引重建,可以采用创建SQL Agent Job的方式定时重建索引,建议一个月重建一次索引。 定时更新统计信息。数据库统计信息需要经常更新对于性能有益。建议采用创建SQL Agent Job的方式每周更新一次统计信息。 关注数据库大小,及时收缩数据库。数据库长时间使用可能会有一些物理空间无法及时释放,需要执行收缩数据库操作才能释放物理空间。需要关注日志文件大小及物理文件大小,发现文件膨胀迅速可以在业务低峰期收缩数据库。 数据库名长度不要超过64个字符,且数据库名当前仅支持数字、大小写字母、中划线()和下划线(),不支持其他特殊字符。 建议修改默认端口。RDS for SQL Server默认端口为1433,公网上一些不安全的程序可能会扫描RDS for SQL Server的默认端口,建议修改默认端口。 推荐使用高可用主备实例。相比于单机实例,高可用实例可以极大提高生产业务的可用性和可靠性。 高可用实例请跨AZ部署,进行AZ级别的容灾。 建议长时间运行的实例在业务低峰期可以重启。实例长时间运行后可能会出现性能下降,推荐每三个月能够在业务低峰期重启一次实例。 设置最大并行度。最大并行度参数影响业务的CPU使用率。默认值为0允许Session使用所有CPU,可能由于某个SQL的问题导致CPU无法分配给其他Session使用。建议根据规格配置,如核数除以2。 临时库(TempDB)创建多个ndf辅助文件。 当执行操作出现权限问题时,请优先参考存储过程的使用,查找使用合适的存储过程。 如需修改SQL Server参数,请在控制台进行修改,不支持通过执行SQL命令方式修改。 备份恢复相关操作请通过管理控制台下发或调用RDS API接口、SDK接口下发,不能通过SSMS或执行SQL直接操作。 恢复数据到已有实例请谨慎操作,避免错误覆盖已有数据导致影响业务。建议使用恢复到新实例功能。 数据库恢复模式(Recovery model)不要设置为simple模式,建议使用full模式。 − 设置为simple模式将不会对该库执行增量备份,因此该库无法恢复到指定时间点。 − 对于主备实例或者集群实例,设置数据库恢复模式是simple模式后,会导致该库不会建立复制关系,进而无法操作主备切换或者规格变更。 因此,请谨慎使用simple模式。 不建议使用长事务或长时间未提交事务。长事务会长时间占用数据库的事务日志,造成事务日志膨胀并且无法阶段回收空间,最终导致磁盘满并造成大量锁等待,阻塞其他SQL执行。如果kill掉后会导致回滚时间更长,至少是事务执行的1.5倍,造成主备复制延迟增大,导致主备切换失败、主备的规格变更失败。
        来自:
        帮助文档
        关系数据库SQL Server版
        用户指南
        使用规范
      • 实例主机资源管理
        MySQL实例出现“磁盘满”状态 关系数据库MySQL版实例可能会因为业务占用数据量或者备份设置导致磁盘存储空间或备份空间被占满,为避免数据丢失,MySQL会对磁盘进行锁定防止磁盘进行写入操作。 针对存储空间或者备份空间达到告警值会自动向客户发送告警信息,提醒用户查看该实例的空间状态,防止对用户的业务造成其他影响。
        来自:
        帮助文档
        关系数据库MySQL版
        常见问题
        管理类
        实例主机资源管理
      • 暂停实例
        如果您暂时不需要使用按需或包周期的关系数据库MySQL版实例,可以暂停该实例。实例暂停后计算资源将被冻结,不再产生资源费用,可以有效为您节省成本。本文为您介绍如何暂停实例、恢复实例,及按需计费实例欠费暂停的处理方法。 注意 从2024年4月14日起部分资源池下线该功能,详情请参见【下线】2024年4月14日起关系数据库MySQL版下线部分资源池暂停实例功能。目前,仅II类型资源池的西南1资源池支持该功能,I类型资源池不支持该功能,具体支持情况以控制台页面展示为准。更多资源池信息,请参见功能概览。 前提条件 实例为主实例,并且实例下面没有只读实例。如果有只读实例,请先退订只读实例,具体操作,请参考退订。 实例没有开启数据库代理。如果有数据库代理,请先关闭代理服务,具体操作,请参考关闭MySQL数据库代理服务。 实例状态为运行中 。 影响 实例暂停期间所有功能均会失效,包括:连接实例、备份、恢复、变更配置等。 实例暂停时,会进行一次全量备份,暂停期间所有备份数据超过保留天数后仍会过期。 实例暂停后,原有内外网连接地址将会保留,当再次启动实例时,仍可使用。 已暂停实例的有效全备可用于恢复到新实例。 已暂停的实例(不论是否到期)如果超过7天仍未重启,将会自动进入回收站,在回收站如果超过7天未处理,将会被注销。
        来自:
        帮助文档
        关系数据库MySQL版
        用户指南
        实例管理
        暂停实例
      • 开启云主机保护
        开启云主机保护 接口功能介绍 开启云主机保护 接口约束 无 URI POST /v4/scaling/group/protectenable 路径参数 无 Query参数 无 请求参数 请求头header参数 无 请求体body参数 参数 是否必填 参数类型 说明 示例 下级对象 regionID 是 String 资源池ID 81f7728662dd11ec810800155d307d5b groupID 是 Integer 伸缩组ID 542 instanceIDList 是 Array of Integers 实例ID列表 [474] 响应参数 参数 参数类型 说明 示例 下级对象 statusCode Integer 返回码:800表示成功,900表示失败 800 errorCode String 业务细分码,为product.module.code三段式码 Scaling.Group.NotFound 错误码 message String 失败时的错误描述,一般为英文描述 scaling group info not found description String 失败时的错误描述,一般为中文描述 未找到弹性伸缩组信息 returnObj Object 成功时返回的数据,参见表returnObj returnObj 表 returnObj 参数 参数类型 说明 示例 下级对象 instanceIDList Array of Integers 实例ID列表 [474] 请求示例 请求头header 无 请求体body json { "groupID": 542, "regionID": "81f7728662dd11ec810800155d307d5b", "instanceIDList": [ 474 ] }
        来自:
        帮助文档
        弹性伸缩服务 AS
        API参考
        API(公测中)
        伸缩组云主机
        开启云主机保护
      • 认证鉴权
        信息的获取 云网平台获取 登录云网门户,在“控制台”>“个人中心”>“ 第三方账号绑定 ”,通过创建或者查看获取ak,sk。 基本签名流程 ctyuneopak/ctyuneopsk基本签名流程 1、待签字符串:使用规范请求和其他信息创建待签字符串; 2、计算密钥:使用HEADER、ctyuneopsk、ctyuneopak来创建Hmac算法的密钥; 3、计算签名:使用第三步的密钥和待签字符串在通过hmacsha256来计算签名。 4、签名应用:将生成的签名信息作为请求消息头添加到HTTP请求中。 创建待签名字符串 待签名字符串的构造规则如下: 待签名字符串 需要进行签名的Header排序后的组合列表+ "n" + 排序的query + "n" + toHex(sha256(原封的body)) 需要进行签名的Header排序后的组合列表(排序的header) header 以 headername:headervalue来一个一个通过n拼接起来,EOP是强制要求ctyuneoprequestid和eopdate这个头作为Header中的一部分,并且必须是待签名Header里的一个。需要进行签名算法的Header需要进行排序(将它们的headername以26个英文字母的顺序来排序),将排序后得到的列表进行遍历组装成待签名的header。 排序的query query以&作为拼接,key和值以连接,排序规则使用26个英文字母的顺序来排序,Query参数全部都需要进行签名。 toHex(sha256(原封的body)) 传进来的body参数进行sha256摘要,对摘要出来的结果转十六进制。 排序的header例子: 假设你需要将ctyuneoprequestid、eopdate、host都要签名,则待签名的header构造出来是: ctyuneoprequestid:123456789neopdate:20210531T100101Znhost:1.1.1.1:9080n ctyuneoprequestid、eopdate和host的排序就是这个顺序,如果你加入一个ccad的header;同时这个header也要是进行签名,则待签名的header组合: ccda:123n ctyuneoprequestid:123456789neopdate:20210531T100101Znhost:1.1.1.1:9080n 构造动态密钥 发起请求时,需要构造一个eopdate的时间,这个时间的格式是yyyymmddTHHMMSSZ;言简意赅一些,就是年月日T时分秒Z 1、先是拿你申请来的ctyuneopsk作为密钥,eopdate作为数据,算出ktime 2、拿ktime作为密钥,你申请来的ctyuneopak数据,算出kAk; 3、拿kAk作为密钥,eopdate的年月日值作为数据;算出kdate eopdate yyyymmddTHHMMSSZ(20211221T163614Z)(年月日T时分秒Z) :: Ktime 使用ctyuneopsk作为密钥,eopdate作为数据,算出ktime; Ktime hmacSha256(ctyuneopsk, eopdate) kAk 使用ktime作为密钥,你申请来的ctyuneopak数据,算出kAk; kAk hmacsha256(ktime,ctyuneopak) kdate 使用kAk作为密钥,eopdate的年月日值作为数据;算出kdate; kdate hmacsha256(kAk, eopdate)
        来自:
        帮助文档
        VPC终端节点
        API参考
        如何调用API
        认证鉴权
      • 认证鉴权
        信息的获取 云网平台获取 登录云网门户,在“控制台”>“个人中心”>“ 第三方账号绑定 ”,通过创建或者查看获取ak,sk。 基本签名流程 ctyuneopak/ctyuneopsk基本签名流程 1、待签字符串:使用规范请求和其他信息创建待签字符串; 2、计算密钥:使用HEADER、ctyuneopsk、ctyuneopak来创建Hmac算法的密钥; 3、计算签名:使用第三步的密钥和待签字符串在通过hmacsha256来计算签名。 4、签名应用:将生成的签名信息作为请求消息头添加到HTTP请求中。 创建待签名字符串 待签名字符串的构造规则如下: 待签名字符串 需要进行签名的Header排序后的组合列表+ "n" + 排序的query + "n" + toHex(sha256(原封的body)) 需要进行签名的Header排序后的组合列表(排序的header) header 以 headername:headervalue来一个一个通过n拼接起来,EOP是强制要求ctyuneoprequestid和eopdate这个头作为Header中的一部分,并且必须是待签名Header里的一个。需要进行签名算法的Header需要进行排序(将它们的headername以26个英文字母的顺序来排序),将排序后得到的列表进行遍历组装成待签名的header。 排序的query query以&作为拼接,key和值以连接,排序规则使用26个英文字母的顺序来排序,Query参数全部都需要进行签名。 toHex(sha256(原封的body)) 传进来的body参数进行sha256摘要,对摘要出来的结果转十六进制。 排序的header例子: 假设你需要将ctyuneoprequestid、eopdate、host都要签名,则待签名的header构造出来是: ctyuneoprequestid:123456789neopdate:20210531T100101Znhost:1.1.1.1:9080n ctyuneoprequestid、eopdate和host的排序就是这个顺序,如果你加入一个ccad的header;同时这个header也要是进行签名,则待签名的header组合: ccda:123n ctyuneoprequestid:123456789neopdate:20210531T100101Znhost:1.1.1.1:9080n 构造动态密钥 发起请求时,需要构造一个eopdate的时间,这个时间的格式是yyyymmddTHHMMSSZ;言简意赅一些,就是年月日T时分秒Z 1、先是拿你申请来的ctyuneopsk作为密钥,eopdate作为数据,算出ktime 2、拿ktime作为密钥,你申请来的ctyuneopak数据,算出kAk; 3、拿kAk作为密钥,eopdate的年月日值作为数据;算出kdate eopdate yyyymmddTHHMMSSZ(20211221T163614Z)(年月日T时分秒Z) :: Ktime 使用ctyuneopsk作为密钥,eopdate作为数据,算出ktime; Ktime hmacSha256(ctyuneopsk, eopdate) kAk 使用ktime作为密钥,你申请来的ctyuneopak数据,算出kAk; kAk hmacsha256(ktime,ctyuneopak) kdate 使用kAk作为密钥,eopdate的年月日值作为数据;算出kdate; kdate hmacsha256(kAk, eopdate)
        来自:
        帮助文档
        共享带宽 SBW
        API参考
        如何调用API
        认证鉴权
      • Java调用示例
        1. com.ffcs.ebp.ebpsdk.common.Response plaintext package com.ffcs.ebp.ebpsdk.common; import java.util.Map; public class Response { private int statusCode; private String body; private Map headers; public int getStatusCode() { return statusCode; } public void setStatusCode(int statusCode) { this.statusCode statusCode; } public String getBody() { return body; } public void setBody(String body) { this.body body; } public Map getHeaders() { return headers; } public void setHeaders(Map headers) { this.headers headers; } } 2. com.ffcs.ebp.ebpsdk.YunSign plaintext package com.ffcs.ebp.ebpsdk; import com.ffcs.ebp.ebpsdk.common.Response; import org.apache.commons.lang.StringUtils; import org.apache.http.Header; import org.apache.http.HttpEntity; import org.apache.http.client.config.AuthSchemes; import org.apache.http.client.config.CookieSpecs; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.methods.; import org.apache.http.config.Registry; import org.apache.http.config.RegistryBuilder; import org.apache.http.conn.socket.ConnectionSocketFactory; import org.apache.http.conn.socket.PlainConnectionSocketFactory; import org.apache.http.conn.ssl.NoopHostnameVerifier; import org.apache.http.conn.ssl.SSLConnectionSocketFactory; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; import org.apache.http.util.EntityUtils; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; import java.io.; import java.net.URLEncoder; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.security.KeyManagementException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.security.cert.X509Certificate; import java.text.SimpleDateFormat; import java.util.; public class YunSign { private String url; private String body; private String ak; private String sk; private String uuId; private int temp; private String contentType; private String queryStr; private Map headerMap; private String afterQuery; public YunSign(String url, String ak, String sk, String uuId, String body, int temp, String contentType, String queryStr, Map headerMap) { this.url url; if(body.equals("{}")){ body ""; } this.body body; this.ak ak; this.sk sk; this.uuId uuId; this.temp temp; this.contentType contentType; this.queryStr queryStr; this.headerMap headerMap; } public Response toDo(String method, int connectTimeout, int connectionRequestTimeout, int socketTimeout) { Response response null; method method.toUpperCase(); switch (method) { case "POST": response doPost(connectTimeout, connectionRequestTimeout, socketTimeout); break; case "GET": if (StringUtils.isNotEmpty(this.body)) { response sendJsonByGetReq(connectTimeout, connectionRequestTimeout, socketTimeout); } else { response doGet(connectTimeout, connectionRequestTimeout, socketTimeout); } break; case "DELETE": if (StringUtils.isNotEmpty(this.body)) { response sendJsonByDeleteReq(connectTimeout, connectionRequestTimeout, socketTimeout); } else { response doDelete(connectTimeout, connectionRequestTimeout, socketTimeout); } break; case "PUT": response doPut(connectTimeout, connectionRequestTimeout, socketTimeout); break; case "PATCH": response doPatch(connectTimeout, connectionRequestTimeout, socketTimeout); break; case "HEAD": response doHead(connectTimeout, connectionRequestTimeout, socketTimeout); break; } return response; } private String getSign(Date eopDate) { String calculateContentHash getSHA256(body); //报文原封不动进行sha256摘要 // System.out.println("calculateContentHash:" + calculateContentHash); SimpleDateFormat TIMEFORMATTER new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); SimpleDateFormat DATEFORMATTER new SimpleDateFormat("yyyyMMdd"); String singerDate TIMEFORMATTER.format(eopDate); String singerDd DATEFORMATTER.format(eopDate); //header的key按照26字母进行排序, 以&作为连接符连起来 try { String CampmocalHeader String.format("ctyuneoprequestid:%sneopdate:%sn", this.uuId, singerDate); String sigture CampmocalHeader + "n" + this.afterQuery + "n" + calculateContentHash; // System.out.println("sigture:" + sigture); byte[] ktime HmacSHA256(singerDate.getBytes(), sk.getBytes()); // System.out.println("ktime:" + HexUtils.bytes2Hex(ktime)); byte[] kAk HmacSHA256(ak.getBytes(), ktime); // System.out.println("kAk:" + HexUtils.bytes2Hex(kAk)); byte[] kdate HmacSHA256(singerDd.getBytes(), kAk); // System.out.println("kdate:" + HexUtils.bytes2Hex(kdate)); String Signature Base64.getEncoder().encodeToString(HmacSHA256(sigture.getBytes("UTF8"), kdate)); // System.out.println("Signature:" + Signature); String signHeader String.format("%s Headersctyuneoprequestid;eopdate Signature%s", ak, Signature); // System.out.println("signHeader:" + signHeader); return signHeader; } catch (Exception e) { e.printStackTrace(); } return null; } / 在调用SSL之前需要重写验证方法,取消检测SSL 创建ConnectionManager,添加Connection配置信息 @return HttpClient 支持https / private static CloseableHttpClient sslClient() { try { // 在调用SSL之前需要重写验证方法,取消检测SSL X509TrustManager trustManager new X509TrustManager() { @Override public X509Certificate[] getAcceptedIssuers() { return null; } @Override public void checkClientTrusted(X509Certificate[] xcs, String str) { } @Override public void checkServerTrusted(X509Certificate[] xcs, String str) { } }; SSLContext ctx SSLContext.getInstance(SSLConnectionSocketFactory.TLS); ctx.init(null, new TrustManager[]{trustManager}, null); SSLConnectionSocketFactory socketFactory new SSLConnectionSocketFactory(ctx, NoopHostnameVerifier.INSTANCE); // 创建Registry RequestConfig requestConfig RequestConfig.custom().setCookieSpec(CookieSpecs.STANDARDSTRICT) .setExpectContinueEnabled(Boolean.TRUE).setTargetPreferredAuthSchemes(Arrays.asList(AuthSchemes.NTLM, AuthSchemes.DIGEST)) .setProxyPreferredAuthSchemes(Arrays.asList(AuthSchemes.BASIC)).build(); Registry socketFactoryRegistry RegistryBuilder. create() .register("http", PlainConnectionSocketFactory.INSTANCE) .register("https", socketFactory).build(); // 创建ConnectionManager,添加Connection配置信息 PoolingHttpClientConnectionManager connectionManager new PoolingHttpClientConnectionManager(socketFactoryRegistry); CloseableHttpClient closeableHttpClient HttpClients.custom().setConnectionManager(connectionManager) .setDefaultRequestConfig(requestConfig).build(); return closeableHttpClient; } catch (KeyManagementException ex) { throw new RuntimeException(ex); } catch (NoSuchAlgorithmException ex) { throw new RuntimeException(ex); } } public Response doGet(int connectTimeout, int connectionRequestTimeout, int socketTimeout) { CloseableHttpClient httpClient null; CloseableHttpResponse response null; Response result new Response(); try { // 通过址默认配置创建一个httpClient实例 if (temp 0) {//绕过SSL httpClient sslClient(); } else { httpClient HttpClients.createDefault(); } String query this.queryStr; this.afterQuery encodeQueryStr(query); //创建HttpGet远程连接实例 HttpGet httpGet; if (StringUtils.isNotEmpty(this.afterQuery)) { httpGet new HttpGet(this.url + "?" + this.afterQuery); } else { httpGet new HttpGet(this.url); } // 设置请求头信息,鉴权 SimpleDateFormat TIMEFORMATTER new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); Date eopDate new Date(); httpGet.setHeader("ContentType", this.contentType); httpGet.setHeader("ctyuneoprequestid", this.uuId); httpGet.setHeader("EopAuthorization", getSign(eopDate)); httpGet.setHeader("Eopdate", TIMEFORMATTER.format(eopDate)); if (this.headerMap ! null) { for (String key : this.headerMap.keySet()) { if (StringUtils.isNotEmpty(key)) { httpGet.setHeader(key, this.headerMap.get(key).toString()); } } } System.out.println("请求头部 "); for (Header header : httpGet.getAllHeaders()) { System.out.println(header.getName() + ":" + header.getValue()); } System.out.println(); // 设置配置请求参数 RequestConfig requestConfig RequestConfig.custom().setConnectTimeout(connectTimeout)// 连接主机服务超时时间 .setConnectionRequestTimeout(connectionRequestTimeout)// 请求超时时间 .setSocketTimeout(socketTimeout)// 数据读取超时时间 .build(); // 为httpGet实例设置配置 httpGet.setConfig(requestConfig); // 执行get请求得到返回对象 response httpClient.execute(httpGet); // 通过返回对象获取返回数据 HttpEntity entity response.getEntity(); // 通过EntityUtils中的toString方法将结果转换为字符串 result.setBody(EntityUtils.toString(entity, "UTF8")); result.setStatusCode(response.getStatusLine().getStatusCode()); Map headerMap new HashMap (); for (Header header : response.getAllHeaders()) { headerMap.put(header.getName(), header.getValue()); } result.setHeaders(headerMap); } catch (Exception e) { e.printStackTrace(); } finally { // 关闭资源 if (null ! response) { try { response.close(); } catch (IOException e) { e.printStackTrace(); } } if (null ! httpClient) { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } public Response sendJsonByGetReq(int connectTimeout, int connectionRequestTimeout, int socketTimeout) { Response result new Response(); CloseableHttpClient client null; CloseableHttpResponse response null; try { // 通过址默认配置创建一个httpClient实例 if (temp 0) {//绕过SSL client sslClient(); } else { client HttpClients.createDefault(); } String query this.queryStr; this.afterQuery encodeQueryStr(query); // 创建HttpGetWithEntity远程连接实例 HttpGetWithEntity httpGetWithEntity; if (StringUtils.isNotEmpty(this.afterQuery)) { httpGetWithEntity new HttpGetWithEntity(this.url + "?" + this.afterQuery); } else { httpGetWithEntity new HttpGetWithEntity(this.url); } // 配置请求参数实例 RequestConfig requestConfig RequestConfig.custom().setConnectTimeout(connectTimeout)// 设置连接主机服务超时时间 .setConnectionRequestTimeout(connectionRequestTimeout)// 设置连接请求超时时间 .setSocketTimeout(socketTimeout)// 设置读取数据连接超时时间 .build(); // 为HttpGetWithEntity实例设置配置 httpGetWithEntity.setConfig(requestConfig); // 设置请求头 SimpleDateFormat TIMEFORMATTER new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); Date eopDate new Date(); httpGetWithEntity.setHeader("ContentType", this.contentType); httpGetWithEntity.setHeader("ctyuneoprequestid", this.uuId); httpGetWithEntity.setHeader("EopAuthorization", getSign(eopDate)); httpGetWithEntity.setHeader("Eopdate", TIMEFORMATTER.format(eopDate)); if (this.headerMap ! null) { for (String key : this.headerMap.keySet()) { if (StringUtils.isNotEmpty(key)) { httpGetWithEntity.setHeader(key, this.headerMap.get(key).toString()); } } } System.out.println("请求头部 "); for (Header header : httpGetWithEntity.getAllHeaders()) { System.out.println(header.getName() + ":" + header.getValue()); } System.out.println(); HttpEntity httpEntity new StringEntity(body, Charset.forName("UTF8")); httpGetWithEntity.setEntity(httpEntity); //执行请求操作,并拿到结果(同步阻塞) response client.execute(httpGetWithEntity); //获取结果实体 HttpEntity entity response.getEntity(); result.setBody(EntityUtils.toString(entity, "UTF8")); result.setStatusCode(response.getStatusLine().getStatusCode()); Map headerMap new HashMap (); for (Header header : response.getAllHeaders()) { headerMap.put(header.getName(), header.getValue()); } result.setHeaders(headerMap); } catch (Exception e) { e.printStackTrace(); } finally { // 关闭资源 if (null ! response) { try { response.close(); } catch (IOException e) { e.printStackTrace(); } } if (null ! client) { try { client.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } public Response doPost(int connectTimeout, int connectionRequestTimeout, int socketTimeout) { CloseableHttpClient httpClient null; CloseableHttpResponse httpResponse null; Response result new Response(); try { // 创建httpClient实例 if (temp 0) {//绕过SSL httpClient sslClient(); } else { httpClient HttpClients.createDefault(); } String query this.queryStr; this.afterQuery encodeQueryStr(query); // 创建httpPost远程连接实例 HttpPost httpPost; if (StringUtils.isNotEmpty(this.afterQuery)) { httpPost new HttpPost(this.url + "?" + this.afterQuery); } else { httpPost new HttpPost(this.url); } // 配置请求参数实例 RequestConfig requestConfig RequestConfig.custom().setConnectTimeout(connectTimeout)// 设置连接主机服务超时时间 .setConnectionRequestTimeout(connectionRequestTimeout)// 设置连接请求超时时间 .setSocketTimeout(socketTimeout)// 设置读取数据连接超时时间 .build(); // 为httpPost实例设置配置 httpPost.setConfig(requestConfig); // 设置请求头 SimpleDateFormat TIMEFORMATTER new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); Date eopDate new Date(); httpPost.setHeader("ContentType", this.contentType); httpPost.setHeader("ctyuneoprequestid", this.uuId); httpPost.setHeader("EopAuthorization", getSign(eopDate)); httpPost.setHeader("Eopdate", TIMEFORMATTER.format(eopDate)); if (this.headerMap ! null) { for (String key : this.headerMap.keySet()) { if (StringUtils.isNotEmpty(key)) { httpPost.setHeader(key, this.headerMap.get(key).toString()); } } } System.out.println("请求头部 "); for (Header header : httpPost.getAllHeaders()) { System.out.println(header.getName() + ":" + header.getValue()); } System.out.println(); // 为httpPost设置封装好的请求参数 StringEntity data new StringEntity(body, Charset.forName("UTF8")); httpPost.setEntity(data); // httpClient对象执行post请求,并返回响应参数对象 httpResponse httpClient.execute(httpPost); // 从响应对象中获取响应内容 HttpEntity entity httpResponse.getEntity(); result.setBody(EntityUtils.toString(entity, "UTF8")); result.setStatusCode(httpResponse.getStatusLine().getStatusCode()); Map headerMap new HashMap (); for (Header header : httpResponse.getAllHeaders()) { headerMap.put(header.getName(), header.getValue()); } result.setHeaders(headerMap); } catch (Exception e) { e.printStackTrace(); } finally { // 关闭资源 if (null ! httpResponse) { try { httpResponse.close(); } catch (IOException e) { e.printStackTrace(); } } if (null ! httpClient) { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } public Response doPut(int connectTimeout, int connectionRequestTimeout, int socketTimeout) { CloseableHttpClient httpClient null; CloseableHttpResponse httpResponse null; Response result new Response(); try { // 创建httpClient实例 if (temp 0) {//绕过SSL httpClient sslClient(); } else { httpClient HttpClients.createDefault(); } String query this.queryStr; this.afterQuery encodeQueryStr(query); // 创建HttpPut远程连接实例 HttpPut httpPut; if (StringUtils.isNotEmpty(this.afterQuery)) { httpPut new HttpPut(this.url + "?" + this.afterQuery); } else { httpPut new HttpPut(this.url); } // 配置请求参数实例 RequestConfig requestConfig RequestConfig.custom().setConnectTimeout(connectTimeout)// 设置连接主机服务超时时间 .setConnectionRequestTimeout(connectionRequestTimeout)// 设置连接请求超时时间 .setSocketTimeout(socketTimeout)// 设置读取数据连接超时时间 .build(); // 为httpPost实例设置配置 httpPut.setConfig(requestConfig); // 设置请求头 SimpleDateFormat TIMEFORMATTER new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); Date eopDate new Date(20321900,01,05); httpPut.setHeader("ContentType", this.contentType); httpPut.setHeader("ctyuneoprequestid", this.uuId); httpPut.setHeader("EopAuthorization", getSign(eopDate)); httpPut.setHeader("Eopdate", TIMEFORMATTER.format(eopDate)); if (this.headerMap ! null) { for (String key : this.headerMap.keySet()) { if (StringUtils.isNotEmpty(key)) { httpPut.setHeader(key, this.headerMap.get(key).toString()); } } } System.out.println("请求头部 "); for (Header header : httpPut.getAllHeaders()) { System.out.println(header.getName() + ":" + header.getValue()); } System.out.println(); // 为httpPost设置封装好的请求参数 StringEntity data new StringEntity(body, Charset.forName("UTF8")); httpPut.setEntity(data); // httpClient对象执行post请求,并返回响应参数对象 httpResponse httpClient.execute(httpPut); // 从响应对象中获取响应内容 HttpEntity entity httpResponse.getEntity(); result.setBody(EntityUtils.toString(entity, "UTF8")); result.setStatusCode(httpResponse.getStatusLine().getStatusCode()); Map headerMap new HashMap (); for (Header header : httpResponse.getAllHeaders()) { headerMap.put(header.getName(), header.getValue()); } result.setHeaders(headerMap); } catch (Exception e) { e.printStackTrace(); } finally { // 关闭资源 if (null ! httpResponse) { try { httpResponse.close(); } catch (IOException e) { e.printStackTrace(); } } if (null ! httpClient) { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } public Response doPatch(int connectTimeout, int connectionRequestTimeout, int socketTimeout) { CloseableHttpClient httpClient null; CloseableHttpResponse httpResponse null; Response result new Response(); try { // 创建httpClient实例 if (temp 0) {//绕过SSL httpClient sslClient(); } else { httpClient HttpClients.createDefault(); } String query this.queryStr; this.afterQuery encodeQueryStr(query); // 创建HttpPatch远程连接实例 HttpPatch httpPatch; if (StringUtils.isNotEmpty(this.afterQuery)) { httpPatch new HttpPatch(this.url + "?" + this.afterQuery); } else { httpPatch new HttpPatch(this.url); } // 配置请求参数实例 RequestConfig requestConfig RequestConfig.custom().setConnectTimeout(connectTimeout)// 设置连接主机服务超时时间 .setConnectionRequestTimeout(connectionRequestTimeout)// 设置连接请求超时时间 .setSocketTimeout(socketTimeout)// 设置读取数据连接超时时间 .build(); // 为httpPost实例设置配置 httpPatch.setConfig(requestConfig); // 设置请求头 SimpleDateFormat TIMEFORMATTER new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); Date eopDate new Date(); httpPatch.setHeader("ContentType", this.contentType); httpPatch.setHeader("ctyuneoprequestid", this.uuId); httpPatch.setHeader("EopAuthorization", getSign(eopDate)); httpPatch.setHeader("Eopdate", TIMEFORMATTER.format(eopDate)); if (this.headerMap ! null) { for (String key : this.headerMap.keySet()) { if (StringUtils.isNotEmpty(key)) { httpPatch.setHeader(key, this.headerMap.get(key).toString()); } } } System.out.println("请求头部 "); for (Header header : httpPatch.getAllHeaders()) { System.out.println(header.getName() + ":" + header.getValue()); } System.out.println(); // 为httpPost设置封装好的请求参数 StringEntity data new StringEntity(body, Charset.forName("UTF8")); httpPatch.setEntity(data); // httpClient对象执行post请求,并返回响应参数对象 httpResponse httpClient.execute(httpPatch); // 从响应对象中获取响应内容 HttpEntity entity httpResponse.getEntity(); result.setBody(EntityUtils.toString(entity, "UTF8")); result.setStatusCode(httpResponse.getStatusLine().getStatusCode()); Map headerMap new HashMap (); for (Header header : httpResponse.getAllHeaders()) { headerMap.put(header.getName(), header.getValue()); } result.setHeaders(headerMap); } catch (Exception e) { e.printStackTrace(); } finally { // 关闭资源 if (null ! httpResponse) { try { httpResponse.close(); } catch (IOException e) { e.printStackTrace(); } } if (null ! httpClient) { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } public Response doDelete(int connectTimeout, int connectionRequestTimeout, int socketTimeout) { CloseableHttpClient httpClient null; CloseableHttpResponse response null; Response result new Response(); try { // 通过址默认配置创建一个httpClient实例 if (temp 0) {//绕过SSL httpClient sslClient(); } else { httpClient HttpClients.createDefault(); } String query this.queryStr; this.afterQuery encodeQueryStr(query); // 创建httpGet远程连接实例 HttpDelete httpDelete; if (StringUtils.isNotEmpty(this.afterQuery)) { httpDelete new HttpDelete(this.url + "?" + this.afterQuery); } else { httpDelete new HttpDelete(this.url); } // 设置请求头信息,鉴权 SimpleDateFormat TIMEFORMATTER new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); Date eopDate new Date(); httpDelete.setHeader("ContentType", this.contentType); httpDelete.setHeader("ctyuneoprequestid", this.uuId); httpDelete.setHeader("EopAuthorization", getSign(eopDate)); httpDelete.setHeader("Eopdate", TIMEFORMATTER.format(eopDate)); if (this.headerMap ! null) { for (String key : this.headerMap.keySet()) { if (StringUtils.isNotEmpty(key)) { httpDelete.setHeader(key, this.headerMap.get(key).toString()); } } } System.out.println("请求头部 "); for (Header header : httpDelete.getAllHeaders()) { System.out.println(header.getName() + ":" + header.getValue()); } System.out.println(); // 设置配置请求参数 RequestConfig requestConfig RequestConfig.custom().setConnectTimeout(connectTimeout)// 连接主机服务超时时间 .setConnectionRequestTimeout(connectionRequestTimeout)// 请求超时时间 .setSocketTimeout(socketTimeout)// 数据读取超时时间 .build(); // 为httpGet实例设置配置 httpDelete.setConfig(requestConfig); // 执行get请求得到返回对象 response httpClient.execute(httpDelete); // 通过返回对象获取返回数据 HttpEntity entity response.getEntity(); // 通过EntityUtils中的toString方法将结果转换为字符串 result.setBody(EntityUtils.toString(entity, "UTF8")); result.setStatusCode(response.getStatusLine().getStatusCode()); Map headerMap new HashMap (); for (Header header : response.getAllHeaders()) { headerMap.put(header.getName(), header.getValue()); } result.setHeaders(headerMap); } catch (Exception e) { e.printStackTrace(); } finally { // 关闭资源 if (null ! response) { try { response.close(); } catch (IOException e) { e.printStackTrace(); } } if (null ! httpClient) { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } public Response sendJsonByDeleteReq(int connectTimeout, int connectionRequestTimeout, int socketTimeout) { CloseableHttpClient httpClient null; CloseableHttpResponse response null; Response result new Response(); try { // 通过址默认配置创建一个httpClient实例 if (temp 0) {//绕过SSL httpClient sslClient(); } else { httpClient HttpClients.createDefault(); } String query this.queryStr; this.afterQuery encodeQueryStr(query); // 创建httpGet远程连接实例 HttpDeleteWithBody delete; if (StringUtils.isNotEmpty(this.afterQuery)) { delete new HttpDeleteWithBody(this.url + "?" + this.afterQuery); } else { delete new HttpDeleteWithBody(this.url); } // 设置请求头信息,鉴权 SimpleDateFormat TIMEFORMATTER new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); Date eopDate new Date(); delete.setHeader("ContentType", this.contentType); delete.setHeader("ctyuneoprequestid", this.uuId); delete.setHeader("EopAuthorization", getSign(eopDate)); delete.setHeader("Eopdate", TIMEFORMATTER.format(eopDate)); if (this.headerMap ! null) { for (String key : this.headerMap.keySet()) { if (StringUtils.isNotEmpty(key)) { delete.setHeader(key, this.headerMap.get(key).toString()); } } } System.out.println("请求头部 "); for (Header header : delete.getAllHeaders()) { System.out.println(header.getName() + ":" + header.getValue()); } System.out.println(); HttpEntity httpEntity new StringEntity(body, Charset.forName("UTF8")); delete.setEntity(httpEntity); // 设置配置请求参数 RequestConfig requestConfig RequestConfig.custom().setConnectTimeout(connectTimeout)// 连接主机服务超时时间 .setConnectionRequestTimeout(connectionRequestTimeout)// 请求超时时间 .setSocketTimeout(socketTimeout)// 数据读取超时时间 .build(); // 为httpGet实例设置配置 delete.setConfig(requestConfig); // 执行get请求得到返回对象 response httpClient.execute(delete); // 通过返回对象获取返回数据 HttpEntity entity response.getEntity(); // 通过EntityUtils中的toString方法将结果转换为字符串 result.setBody(EntityUtils.toString(entity, "UTF8")); result.setStatusCode(response.getStatusLine().getStatusCode()); Map headerMap new HashMap (); for (Header header : response.getAllHeaders()) { headerMap.put(header.getName(), header.getValue()); } result.setHeaders(headerMap); } catch (Exception e) { e.printStackTrace(); } finally { // 关闭资源 if (null ! response) { try { response.close(); } catch (IOException e) { e.printStackTrace(); } } if (null ! httpClient) { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } public Response doHead(int connectTimeout, int connectionRequestTimeout, int socketTimeout) { CloseableHttpClient httpClient null; CloseableHttpResponse response null; Response result new Response(); try { // 通过址默认配置创建一个httpClient实例 if (temp 0) {//绕过SSL httpClient sslClient(); } else { httpClient HttpClients.createDefault(); } String query this.queryStr; this.afterQuery encodeQueryStr(query); // 创建httpHead远程连接实例 HttpHead httpHead; if (StringUtils.isNotEmpty(this.afterQuery)) { httpHead new HttpHead(this.url + "?" + this.afterQuery); } else { httpHead new HttpHead(this.url); } // 设置请求头信息,鉴权 SimpleDateFormat TIMEFORMATTER new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); Date eopDate new Date(); httpHead.setHeader("ContentType", this.contentType); httpHead.setHeader("ctyuneoprequestid", this.uuId); httpHead.setHeader("EopAuthorization", getSign(eopDate)); httpHead.setHeader("Eopdate", TIMEFORMATTER.format(eopDate)); if (this.headerMap ! null) { for (String key : this.headerMap.keySet()) { if (StringUtils.isNotEmpty(key)) { httpHead.setHeader(key, this.headerMap.get(key).toString()); } } } System.out.println("请求头部 "); for (Header header : httpHead.getAllHeaders()) { System.out.println(header.getName() + ":" + header.getValue()); } System.out.println(); // 设置配置请求参数 RequestConfig requestConfig RequestConfig.custom().setConnectTimeout(connectTimeout)// 连接主机服务超时时间 .setConnectionRequestTimeout(connectionRequestTimeout)// 请求超时时间 .setSocketTimeout(socketTimeout)// 数据读取超时时间 .build(); // 为httpHead实例设置配置 httpHead.setConfig(requestConfig); // 执行head请求得到返回对象 response httpClient.execute(httpHead); // 通过返回对象获取返回数据 HttpEntity entity response.getEntity(); // 通过EntityUtils中的toString方法将结果转换为字符串 result.setBody(EntityUtils.toString(entity, "UTF8")); result.setStatusCode(response.getStatusLine().getStatusCode()); Map headerMap new HashMap (); for (Header header : response.getAllHeaders()) { headerMap.put(header.getName(), header.getValue()); } result.setHeaders(headerMap); } catch (Exception e) { e.printStackTrace(); } finally { // 关闭资源 if (null ! response) { try { response.close(); } catch (IOException e) { e.printStackTrace(); } } if (null ! httpClient) { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } private String toHex(byte[] data) { StringBuilder sb new StringBuilder(data.length 2); byte[] var2 data; int var3 data.length; for (int var4 0; var4 2) { String encodeStr null; encodeStr URLEncoder.encode(s[1], "UTF8"); str s[0] + "" + encodeStr; afterQuery afterQuery + str; } else { String encodeStr ""; str s[0] + "" + encodeStr; afterQuery afterQuery + str; } } else { String[] s str.split(""); if (s.length > 2) { String encodeStr URLEncoder.encode(s[1], "UTF8"); str s[0] + "" + encodeStr; afterQuery afterQuery + "&" + str; } else { String encodeStr ""; str s[0] + "" + encodeStr; afterQuery afterQuery + "&" + str; } } } } } catch (Exception e) { e.printStackTrace(); } return afterQuery; } } 3. HexUtils.java plaintext package com.ffcs.ebp.ebpsdk; public class HexUtils { private static final char[] HEXES { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; / byte数组 转换成 16进制小写字符串 / public static String bytes2Hex(byte[] bytes) { if (bytes null bytes.length 0) { return null; } StringBuilder hex new StringBuilder(); for (byte b : bytes) { hex.append(HEXES[(b >> 4) & 0x0F]); hex.append(HEXES[b & 0x0F]); } return hex.toString(); } / 16进制字符串 转换为对应的 byte数组 / public static byte[] hex2Bytes(String hex) { if (hex null hex.length() 0) { return null; } char[] hexChars hex.toCharArray(); byte[] bytes new byte[hexChars.length / 2]; // 如果 hex 中的字符不是偶数个, 则忽略最后一个 for (int i 0; i headerMap new HashMap<>(); // headerMap.put("queryMetricDataInfo", "{"regionId":"cnsz1","dim":"instanceid,98cdcc8a8e544788ab9cc94ccee429c7","filter":"average","from":"1658473040","to":"1658473040","metricName":"netbitRecv","namespace":"AGT.ECS","period":"1"},"platform":"3"}"); // headerMap.put("platform", "3"); // headerMap.put("consoleUrl", " // headerMap.put("UserAgent", "3333433"); // headerMap.put("XForwardedFor", "1231313"); // headerMap.put("regionId", "100054c0416811e9a6690242ac110002"); // headerMap.put("prodInstId","9dcaf0157c604100af79bdb8271527bc"); //请求地址 String url " //query参数(?后面拼接的参数。没有就不填) aaaa&bbbb String queryStr "regionID41f64827xxxxxxxxxffa3a5deb5d15d"; //body参数(没有就不填) String body ""; //APPID String ak "9f82cacd3f8235c66edfs5e899f098e6"; //appkey String sk "MlgzESz430hJgTzA4lkjuJvDMMLTqwBQRicVqV62VM"; String uuId UUID.randomUUID().toString(); //连接超时 int connectTimeout 35000; //连接请求超时 int connectionRequestTimeout 35000; //socket超时 int socketTimeout 60000; YunSign yunSign new YunSign(url, ak, sk, uuId, body, temp, contentType, queryStr, headerMap); Response response yunSign.toDo(method, connectTimeout, connectionRequestTimeout, socketTimeout); System.out.println("应答头部 "); for (Map.Entry entry : response.getHeaders().entrySet()) { System.out.println(entry.getKey().toString() + ":" + entry.getValue().toString()); } System.out.println(); System.out.println("请求结果 "); System.out.println(response.getBody()); } }
        来自:
        帮助文档
        对象存储 ZOS
        API参考
        API(OpenAPI)
        如何调用API
        Java调用示例
      • 恢复出厂设置
        常见问题 • Q:恢复出厂设置需要多长时间? A:通常需要 1~3 分钟,包括恢复和重启过程。 • Q:恢复出厂设置会丢失哪些数据? A:所有用户配置、自定义设置、历史会话记录等都将被清除,恢复到初始安装状态。 • Q:什么情况下需要恢复出厂设置? A:当 XClaw 出现严重问题无法通过自动修复解决,或需要将服务转让给他人使用时。 • Q:恢复出厂设置后可以恢复之前的数据吗? A:不能,恢复出厂设置是不可逆操作,执行前请务必备份重要数据。 • Q:恢复出厂设置后需要做什么? A:系统重启后,您需要重新进行初始配置,包括设置IM通道、配置模型等。
        来自:
        帮助文档
        应用托管
        用户指南
        XClaw(内测功能)
        高级功能
        恢复出厂设置
      • 服务端加密
        介绍配置服务端加密的具体步骤。 适用场景 媒体存储支持服务端加密,当用户对存储桶配置服务端加密后,XOS将上传到该桶的对象进行加密,再将加密对象持久化保存。当用户通过GetObject请求下载对象时,XOS自动将加密对象解密后返回给用户,并在响应头中返回xamzserversideencryption,用于声明该对象进行了服务器端加密。 注意 本功能仅会对开启服务端加密之后上传的对象进行加密,不会改变已有对象的加密状态。关闭服务端加密,也不会影响已有对象的加密状态。 产品支持XOS完全托管,即密钥完全托管于服务端。 控制台仅支持配置AES256加密算法。 适用区域 本功能目前仅部分资源池支持,具体可参考:资源池与区域节点。 如需使用,可联系客户经理或提交工单申请。 配置桶默认加密 创建桶配置服务端加密 在创建桶的弹窗中,选择服务端加密方式以及对应的加密算法。创建桶的具体操作可参考:新建Bucket。 已创建的存储桶开启服务端加密 1. 登录媒体存储控制台,进入【对象存储Bucket列表】菜单。 2. 选择需要设置服务端加密的存储桶,进入【基础配置】标签页。 3. 在【服务端加密】设置项,点击【编辑】。 4. 在弹窗中选择【XOS完全托管】以及对应的加密算法,点击【确定】完成操作。 关闭桶默认加密 1. 登录媒体存储控制台,进入【对象存储Bucket列表】菜单。 2. 选择需要关闭服务端加密的存储桶,进入【基础配置】标签页。 3. 在【服务端加密】设置项,点击【编辑】。 4. 在弹窗中选择【无】,点击【确定】。
        来自:
        帮助文档
        媒体存储
        控制台指南
        对象存储
        数据安全
        服务端加密
      • 操作指导
        本节介绍云等保专区产品的数据库审计。 数据库审计v1.0是专业的数据库应用安全防护产品,帮助用户应对网站运营中的安全风险,为数据库应用提供全方位的防护,提供覆盖数据库使用全生命周期的安全防护解决方案。 功能介绍 产品功能分为原始信息收集 、审计信息标准化 、审计信息筛选 、预警与报表四大模块。 原始信息收集 通过旁路镜像的模式部署 不改变用户现有网络结构 不占用数据库服务器资源 不影响数据库性能 支持分布式部署 实现配置与报表的集中管理 并发流量采集与处理、多点存储、多级管理 自动定期发现功能,及时发现未知数据库 审计信息标准化 支持国内外主流数据库,包括传统的数据库系统、大数据系统和Web系统等。 具体支持的系统和版本如下表所示: 数据库分类 数据库系统 版本 关系型 Oracle 8i、9i、10g、11g、12c、18c、19c、21c 关系型 MySQL 4.0、4.1、5.0、5.1、5.5、5.6、5.7、8.0 关系型 SQL Server 2000、2005、2008、2012、2014、2016、2017、2019 关系型 Sybase ASE 11.9、12.5 关系型 DB2 v80、v81、v82、v95、v97、v10.5、v11.1、v11.5 关系型 Informix IDS9 关系型 Oscar 5.5、5.7 关系型 达梦(DM) DM7、DM8 关系型 Cache 2010、2016 关系型 PostgreSQL 9、10、11、12、13、14 关系型 Teradata 所有版本 关系型 人大金仓(Kingbase) V6、V7、V8 关系型 GBase 8.5a、8.8s 关系型 MariaDB 5.1、5.2、5.3、5.5、10.0、10.1、10.2、10.3 关系型 Hana 1.0、2.0 关系型 GaussDB 100、200、300 关系型 LibrA 6 关系型 KDB 11 关系型 Sybase IQ 15.4 关系型 TiDB 4.X、5.X 关系型 Vertica 7、8、9、10、11 关系型 OceanBase 2.X 关系型 PolarDB MySQL、PostgreSQL、兼容Oracle语法 关系型 PolarDBX 1.0/MySQL5、1.0/MySQL8、2.0/MySQL5.7 关系型 AnalyticDB MySQL、PostgreSQL 关系型 TBase V2 关系型 HighGo 6.0 关系型 TDSQLC MySQL 5.7、8.0 关系型 TDSQLC PostgreSQL 10、14 非关系型 MongoDB 2.x、3.x、4.x、5.x 非关系型 HBase(protobuf) 所有版本 非关系型 HBase(thrift) Thrift1、thrift2 非关系型 Hive 1.X、2.X、3.X 非关系型 Redis 所有版本 非关系型 Elasticsearch 所有版本 非关系型 Cassandra 3.X 非关系型 HDFS 所有版本 非关系型 Impala 3.X 非关系型 Graphbase 6 非关系型 Greenplum 5、6 非关系型 Spark SQL(thrift) 1.x、2.x 非关系型 Spark SQL(RESTful) 1.x、2.x 非关系型 SSDB 所有版本 非关系型 ArangoDB 3.4.9 非关系型 Neo4j 4.2.0 非关系型 OrientDB 3.1.6 大数据 HBase(protobuf) 所有版本 大数据 HBase(thrift) thrift1、thrift2 大数据 Hive 1.X、2.X、3.X 大数据 Cassandra 3.X 大数据 HDFS 所有版本 大数据 Impala 3.X 大数据 Graphbase 5、6 大数据 Spark SQL(thrift) 1.x、2.x 大数据 Spark SQL(RESTful) 1.x、2.x 大数据 SSDB 所有版本 大数据 MAX COMPUTE 所有版本 图形 Graphbase 6 图形 ArangoDB 3.4.9 图形 Neo4j 4.2.0 图形 OrientDB 3.1.6 全文检索 Elasticsearch 所有版本 文档 MongoDB 2.x、3.x、4.x、5.x 文档 ArangoDB 3.4.9 键值 Redis 所有版本 其他 HTTP 所有版本 其他 Telnet 所有版本 其他 FTP 所有版本 RDS MySQL 5.5、5.6、5.7、8.0 RDS SQL Server 2008 R2云盘版、2012 Web、2012企业版 单机、2012企业版、2012标准版、2014企业版、2014标准版、2016 Web、2016企业版、2016标准版、2017 Web、2017企业集群版、2017标准版、2019 Web、2019企业集群版、2019标准版 RDS PostgreSQL 10、11、12、13、14 将不同数据库协议按照标准化的格式进行展示,方便管理人员阅读和分析。
        来自:
        帮助文档
        云等保专区
        用户指南
        数据库审计
        数据库审计v1.0
        操作指导
      • 重启实例
        本章节介绍如何重启实例。 操作场景 您可能需要重启数据库实例,通常是出于维护目的。例如:对于某些运行参数修改,需要重启单个实例使之生效。您可通过控制台对主机和只读实例执行重启操作。 只有实例状态为可用时才能进行重启操作,但正在执行备份或创建只读副本任务的实例不能重启。 注意 如果数据库实例未处于“正常”状态,则无法重启该实例。您的数据库可能会由于几个原因而不可用,例如,正在进行备份或以前请求的修改操作。 重启数据库实例会重新启动数据库引擎服务。重启数据库实例将导致短暂中断,在此期间,数据库实例状态将显示为“重启中”。 重启过程中,实例将不可用。重启后实例会自动释放内存中的缓存,请注意对业务进行预热,避免业务高峰期出现阻塞。 操作步骤 1、登录管理控制台。 2、单击管理控制台左上角的,选择区域和项目。 3、选择“数据库 > 关系型数据库”。进入关系型数据库信息页面。 4、在“实例管理”页面,选择指定的主实例,或者单击展开只读实例,单击“更多 > 重启实例”。 您也可以在“实例管理”页面,单击目标实例名称,在页面右上角,单击“重启实例”。 重启实例时,如果是主备实例,对应的备实例也会被同步重启。 5、在“重启实例”弹框,单击“是”重启实例。 6、稍后刷新实例列表,查看重启结果。如果实例状态为“正常”,说明实例重启成功。
        来自:
        帮助文档
        关系数据库SQL Server版
        用户指南
        管理数据库实例
        重启实例
      • 企业站点之间以设备直连方式进行组网
        参数 描述 实例名称 智能网关实例名称,长度为164字符,以大小写字母或中文开头,可包含数字、“.”、 “”、“”。 组网方案 可选“高性能核心网”或者“互联网直连”。 “高性能核心网”表示各个设备均需连接到SDWAN POP上,设备上的流量通过POP之间的网络进行传输; 互联网直连表示各个设备之间直接打通,流量不经过POP绕转。 这里需选择“互联网直连”。 区域 所属位置信息。 基础带宽 互联网直连组网方案暂不支持带宽限速,无需配置带宽。 网关形态 可选择硬件版、软件版,这里选择“硬件版”。 是否购买设备 表示是否需要从天翼云购买设备。 选择“是”,则天翼云会为您准备一台设备; 选择“否”,则需要用户自备设备。 这里选择“是”。 设备类型 购买设备时,需要选择设备的型号。 可以选择经济版、标准版、企业版、企业增强版。 增值业务 可选的增值业务,包括5G服务、WIFI服务、LTE服务。 使用方式 表示设备的使用方式。可选择单机或者双机备份。 地址信息 表示设备的装机地址。请准确填写地址信息,提交订单后不支持更改。
        来自:
        帮助文档
        天翼云SD-WAN
        最佳实践
        企业站点之间以设备直连方式进行组网
      • 到期与欠费
        本页介绍了数据传输服务DTS的到期与欠费相关情况。 服务到期与欠费都会影响您的DTS实例的正常使用。 服务到期 “按需计费”任务,无需担心服务到期问题。 “包年/包月”任务到期后将会被暂停,在暂停期间您无法通过DTS控制台对该任务进行操作,无法调用相关接口,监控告警等服务也会停止。如果您没有在暂停期内续费,那么该DTS任务将被终止,并且传输数据也将被永久删除。为了避免数据丢失,我们强烈建议您在暂停期内及时续费,或者提前备份数据并另行妥善保存。 对于到期暂停的任务,您可以在7天内对相关任务进行续费,以继续享用服务。 欠费 “包年/包月”DTS任务,用户已经预先支付了资源费用,因此在账户出现欠费的情况下,已有的包年/包月DTS任务仍可正常使用。 “按需计费”DTS任务是按每小时扣费,当余额不足,无法对上一个小时的费用进行扣费,就会导致任务欠费,任务将会被暂停。您续费后暂停的任务,可继续正常使用,请注意在暂停期进行的续费,是以原到期时间作为生效时间,您应当支付从进入暂停期开始到续费时的服务费用。 对于欠费导致暂停的任务,您可以在7天内充值,对相关实例进行续费,以继续享用服务。
        来自:
        帮助文档
        数据传输服务DTS
        计费说明
        到期与欠费
      • 操作系统升级
        本节介绍云容器引擎的最佳实践:操作系统升级。 操作系统升级指允许对集群中的工作节点进行操作系统版本升级。 升级方式 开通新集群 新建节点池并扩容 更换节点池操作系统 使用须知 通过更换节点池操作系统方式来升级操作系统采用节点重置方式实现,节点重置有关注意事项如下: 重置节点将对节点操作系统进行重置安装,节点上已运行的工作负载业务将会中断,请在业务低峰期操作。 节点重置后系统盘,挂载kubelet、containerd的数据盘将会被清空,重置前请事先备份重要数据。 用户节点如果有自行挂载了数据盘,重置完后会清除挂载信息,请事先备份重要数据,重置完成后请重新执行挂载行为,数据不会丢失。 节点上的工作负载实例的IP会发生变化,但是不影响容器网络通信。 操作过程中,后台会把当前节点设置为不可调度状态。 节点重置会清除用户单独添加的K8S标签和污点(通过节点池编辑功能添加的标签、污点不会丢失),可能导致与节点有绑定关系的资源(本地存储,指定调度节点的负载等)无法正常使用。请谨慎操作,避免对运行中的业务造成影响。 重置节点会导致与节点关联的localpv类型的PVC/PV数据丢失,无法恢复,且PVC/PV无法再正常使用。重置节点时使用了本地持久存储卷的Pod会从重置的节点上驱逐,并重新创建Pod,Pod会一直处于 pending状态,因为Pod使用的PVC带有节点标签,由于冲突无法调度成功。节点重置完成后,Pod可能调度到重置好的节点上,此时Pod会一直处于creating状态,因为PVC对应的底层逻辑卷已经不存在了。 重置节点使用的相关配置是节点所在节点池的最新配置。 更多升级节点池和节点重置相关内容请参见升级节点池 、节点重置。
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        最佳实践
        节点和节点池
        操作系统升级
      • 创建自定义镜像v3
        接口功能介绍 请将云电脑中的敏感数据删除之后再创建自定义镜像,避免数据安全隐患。 请勿在创建镜像过程中对所选云电脑及其相关资源进行其他操作。 目前只支持仅有1个数据盘的非池化云电脑进行创建整机镜像。 创建整机镜像将会根据系统盘和数据盘的容量进行存储包资源扣减。 接口约束 无 URI POST /v3/customImage/create 路径参数 无 Query参数 参数 是否必填 参数类型 说明 示例 下级对象 regionId 是 String 资源池ID。 d8bbd132b53a11e9b0e40242ac110002 请求参数 请求头header参数 无 请求体body参数 参数 是否必填 参数类型 说明 示例 下级对象 imageName 是 String 镜像名称。只能由数字、英文字母、中划线、下划线和小数点组成,字符数限制[1,50]。 WindowsServer2019Standardv1.3 description 否 String 描述。字符数限制[0,200]。默认为空字符串。 fooDesc desktopOid 是 String 云电脑ID D0023092201180710 resourcePackOid 是 String 资源包ID rspt4o453t1hs44mr3fqfrj4 type 否 String 镜像类型。默认值为:sys。取值范围:(sys系统镜像;all整机镜像) null
        来自:
        帮助文档
        天翼云电脑(政企版)
        API参考
        API
        2023-10-30
        镜像
        创建自定义镜像v3
      • 产品定义
        自动数据备份 支持将集群快照自动备份到EB级对象存储服务OBS(Object Storage Service)中,方便利用业务空闲期对集群做周期备份以保证集群异常后的数据恢复。 快照是DWS集群在某一时间点的完整备份,记录了这一时刻指定集群的所有配置数据和业务数据。 工具链 提供了数据并行加载工具GDS(General Data Service)、SQL语法迁移工具DSC(Database Schema Convertor)、SQL开发工具Data Studio,并支持通过控制台对集群进行运维监控。 集群逻辑架构 DWS集群逻辑架构如下图所示。实例的详细介绍请参见下表“集群架构说明”。 集群架构说明 名称 描述 说明 GTM 全局事务管理器(Global Transaction Manager),负责生成和维护全局事务ID、事务快照、时间戳等全局唯一的信息。 整个集群只有一组GTM:主、备GTM各一个。 WLM 工作负载管理器(Workload Manager)。控制系统资源的分配,防止过量业务负载对系统的冲击而导致业务拥塞和系统崩溃。 不同于集群中的实例(GTM、CM、CN、DN)模块,不需要在安装过程中指定主机名称。安装程序会自动在各主机上安装此模块。 CN 协调节点(Coordinator)。负责接收来自应用的访问请求,并向客户端返回执行结果;负责分解任务,并调度任务分片在各DN上并行执行。 集群中,CN有多个并且CN的角色是对等的(执行DML语句时连接到任何一个CN都可以得到一致的结果)。只需要在CN和应用程序之间增加一个负载均衡器,使得CN对应用是透明的。CN故障时,由负载均衡自动路由连接到另外一个CN。 当前分布式事务框架下无法避免CN之间的互连,为了减少GTM上线程过多导致负载过大,建议CN配置数目≤10个。 DWS通过CCN(Central Coordinator)负责集群内的资源全局负载控制,以实现自适应的动态负载管理。CM在第一次集群启动时,通过集群部署形式,选择编号最小的CN作为CCN。若CCN故障之后,由CM选择新的CCN进行替换。 DN 数据节点(Datanode)。负责存储业务数据(支持行存、列存、混合存储)、执行数据查询任务以及向CN返回执行结果。 在集群中,DN有多个。每个DN存储了一部分数据。集群部署常用方式为主备从高可用模式,若DN故障时导致该实例上的数据无法访问,可进行集群高可用操作,详情请参见。 Storage 服务器的本地存储资源,持久化存储数据。 集群的每个DN上负责存储数据,其存储介质也是磁盘。下图“数据库逻辑结构图”从逻辑上介绍了每个DN上都有哪些对象,以及这些对象之间的关系,其中: Database,即数据库,用于管理各类数据对象,各数据库间相互隔离。 Datafile Segment,即数据文件,通常每张表只对应一个数据文件。如果某张表的数据大于1GB,则会分为多个数据文件存储。 Table,即表,每张表只能属于一个数据库。 Block,即数据块,是数据库管理的基本单位,默认大小为8KB。 数据有三种分布方式,可以在建表的时候指定:REPLICATION、ROUNDROBIN 、HASH。 数据库逻辑结构图
        来自:
        帮助文档
        数据仓库服务
        产品简介
        产品定义
      • 重启实例
        说明:本章节会介绍如何重启实例 操作场景 通常出于维护目的,您可能需要重启数据库实例。例如:对于某些运行参数修改,需要重启单个实例使之生效。您可通过控制台对主实例和只读实例执行重启操作。 重启实例需要同时满足以下要求: 实例为可用状态。 未在执行备份或创建只读副本任务。 如果数据库实例未处于“正常”状态,则无法重启该实例。您的数据库可能会由于几个原因而不可用,例如,正在进行备份或以前请求的修改操作。 重启数据库实例会重新启动数据库引擎服务。重启数据库实例将导致短暂中断,在此期间,数据库实例状态将显示为“重启中”。 重启过程中,实例将不可用。重启后实例会自动释放内存中的缓存,请注意对业务进行预热,避免业务高峰期出现阻塞。 操作步骤 步骤1 登录管理控制台。 步骤2 单击管理控制台左上角的,选择区域和项目。 步骤3 选择“数据库 > 关系型数据库”。进入关系型数据库信息页面。 步骤4 在“实例管理”页面,选择指定的主实例,或者单击展开只读实例,单击“更多 > 重启实例”。 您也可以在“实例管理”页面单击目标实例名称,进入“基本信息”页面。在页面右上角,单击“重启实例”。 重启实例时,如果是主备实例,对应的备实例也会被同步重启。 步骤5 在“重启实例”弹框,单击“是”重启实例。 步骤6 稍后刷新实例列表,查看重启结果。如果实例状态为“正常”,说明实例重启成功。
        来自:
        帮助文档
        专属云(关系型数据库MySQL)
        用户指南
        实例管理
        重启实例
      • 关系数据库SQL Server版如何进行扩容
        本文主要介绍了关系数据库SQL Server版扩容类型分类。 关系数据库SQL Server版配置变更能力包含实例规格扩容、扩容磁盘、备份空间扩容、实例类型升级。 变更类型 说明 :: 实例规格扩容 实例规格包含内存和cpu规格扩容。 扩容磁盘 在扩容磁盘时,最小增加量为10 GB,最大不能超过当前实例规格的存储空间限制。 备份空间扩容 在备份空间扩容时,最小增加量为10 GB,最大不能超过当前实例规格的存储空间限制。 实例类型升级 支持单机版到主备版的实例类型升级。
        来自:
        帮助文档
        关系数据库SQL Server版
        常见问题
        性能/空间/内存
        关系数据库SQL Server版如何进行扩容
      • 变更集群实例的节点
        本节主要介绍变更集群实例的节点 添加集群实例节点 使用须知 账户余额大于等于0元,才可添加节点。 实例状态为正常、删除备份中和恢复检查中时可以添加节点。 实例在备份过程中无法添加节点。 实例进行添加节点时,该实例不可被删除。 计费说明 对于按需计费的实例,添加节点后,依旧按使用时长实时计费。 对于包年/包月的实例,添加节点后,差价需补交。 计费详情请参见产品价格详情。 添加mongos 步骤 1 登录管理控制台。 步骤 2 单击管理控制台左上方的,选择区域和项目。 步骤 3 在页面左上角单击,选择“数据库 > 文档数据库服务 DDS”,进入文档数据库服务信息页面。 步骤 4 在“实例管理”页面,选择指定的集群实例,单击实例名称。 步骤 5 在“基本信息”页面的“节点信息”区域,选择“mongos”页签,单击“添加mongos”。 节点信息 步骤 6 在“添加mongos”页面,选择性能规格、节点数量和参数模板,单击“下一步”。 添加mongos 社区版集群实例最多支持32个mongos节点。 步骤 7 在确认页面,确认节点配置信息。 包年/包月 如需重新选择,单击“上一步”,修改相关配置。 核对无误后,单击“提交订单”,进入付款页面,选择支付方式,完成支付。 按需计费 如需重新选择,单击“上一步”,修改相关配置。 核对无误后,单击“提交”,开始添加节点。 步骤 8 查看添加节点结果。 添加节点过程中,实例运行状态显示为“节点扩容中”,此过程约10~15分钟。 在实例列表的右上角,单击刷新列表,可看到添加节点完成的实例的运行状态显示为“正常”。 在实例“基本信息”页面的“节点信息”区域,选择“mongos”页签,可查看新增mongos节点信息。 若添加mongos节点失败,可进行批量回退或单个删除操作,详见[回退集群实例的节点](
        来自:
        帮助文档
        文档数据库服务
        用户指南
        变更实例
        变更集群实例的节点
      • 1
      • ...
      • 78
      • 79
      • 80
      • 81
      • 82
      • ...
      • 637
      跳转至
      推荐热词
      天翼云运维管理审计系统天翼云云服务平台云服务备份云日志服务应用运维管理云手机云电脑天翼云云hbase数据库电信云大数据saas服务电信云大数据paas服务轻量型云主机天翼云客户服务电话应用编排服务天翼云云安全解决方案云服务总线CSB天翼云服务器配置天翼云联邦学习产品天翼云云安全天翼云企业上云解决方案天翼云产品天翼云视频云存储

      天翼云最新活动

      安全隔离版OpenClaw

      OpenClaw云服务器专属“龙虾“套餐低至1.5折起

      聚力AI赋能 天翼云大模型专项

      大模型特惠专区·Token Plan 轻享包低至9.9元起

      青云志云端助力计划

      一站式科研助手,海外资源安全访问平台,助力青年翼展宏图,平步青云

      企业出海解决方案

      助力您的业务扬帆出海,通达全球!

      天翼云信创专区

      “一云多芯、一云多态”,国产化软件全面适配,国产操作系统及硬件芯片支持丰富

      中小企业服务商合作专区

      国家云助力中小企业腾飞,高额上云补贴重磅上线

      云上钜惠

      爆款云主机全场特惠,2核4G只要1.8折起!

      天翼云奖励推广计划

      加入成为云推官,推荐新用户注册下单得现金奖励

      产品推荐

      GPU云主机

      天翼云CTyunOS系统

      公共算力服务

      星辰TokenHub运营服务平台

      应用托管

      科研助手

      星辰MaaS模型服务平台

      智算一体机

      知识库问答

      推荐文档

      启动会议

      支持的监控指标

      Telnet/SSH/Rlogin访问

      系统

      创建云间高速

      产品介绍

      实例管理

      • 7*24小时售后
      • 无忧退款
      • 免费备案
      • 专家服务
      售前咨询热线
      400-810-9889转1
      关注天翼云
      • 旗舰店
      • 天翼云APP
      • 天翼云微信公众号
      服务与支持
      • 备案中心
      • 售前咨询
      • 智能客服
      • 自助服务
      • 工单管理
      • 客户公告
      • 涉诈举报
      账户管理
      • 管理中心
      • 订单管理
      • 余额管理
      • 发票管理
      • 充值汇款
      • 续费管理
      快速入口
      • 天翼云旗舰店
      • 文档中心
      • 最新活动
      • 免费试用
      • 信任中心
      • 天翼云学堂
      云网生态
      • 甄选商城
      • 渠道合作
      • 云市场合作
      了解天翼云
      • 关于天翼云
      • 天翼云APP
      • 服务案例
      • 新闻资讯
      • 联系我们
      热门产品
      • 云电脑
      • 弹性云主机
      • 云电脑政企版
      • 天翼云手机
      • 云数据库
      • 对象存储
      • 云硬盘
      • Web应用防火墙
      • 息壤智算平台
      • CDN加速
      热门推荐
      • 云服务备份
      • 边缘安全加速平台
      • 全站加速
      • 安全加速
      • 云服务器
      • 云主机
      • 智能边缘云
      • 应用编排服务
      • 微服务引擎
      • 共享流量包
      更多推荐
      • web应用防火墙
      • 密钥管理
      • 等保咨询
      • 安全专区
      • 应用运维管理
      • 云日志服务
      • 文档数据库服务
      • 云搜索服务
      • 数据湖探索
      • 数据仓库服务
      友情链接
      • 中国电信集团
      • 天翼云国际站
      • 189邮箱
      • 天翼企业云盘
      • 天翼云盘
      ©2026 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
      公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
      • 用户协议
      • 隐私政策
      • 个人信息保护
      • 法律声明
      备案 京公网安备11010802043424号 京ICP备 2021034386号