华为云用户手册

  • 注意事项 当前仅提供ECS、EVS、RDS、ELB和SFS Turbo产品的按需转包年包月的成本优化建议。 优化评估结果均基于官网价计算,未考虑商务折扣的影响。 当前仅支持按需转包月或包一年的优化评估,更多周期的成本评估,可参考价格计算器。 成本中心针对财务托管企业主账号,会同时分析其名下企业子关联期间的成本和用量情况,同时提供企业子对应的优化评估记录。 成本中心在评估时,假定您的历史成本和用量反映了您的未来情况。估算月度用量时,不会预测您的使用量,优化评估时也不考虑预测。 按需转包年包月的优化评估将会在每天17:00点后计算并更新一次。
  • 查看成本优化评估数据 登录“成本中心”。 选择“成本优化 ”,在成本场景优化优化列表中,单击按需转包年包月对应的“查看详情”。 设置“参考数据”和“周期”,查看优化数据。 参数 说明 优化前预计月度支出 优化前,按需资源在指定时间范围内预估的月度原始成本数据。 示例:参考数据设置为基于过去60天,则优化前预计月度支出=近60天的按需官网价÷60÷24*730。 说明: 成本预估时,默认每个月为730个小时。 优化后月度摊销成本 优化后,根据设置的周期计算出月度摊销成本数据。 周期为包月时,月度摊销成本=包月产品价格 周期为包一年时,月度摊销成本=包一年产品价格/12 关联账号 产生按需资源的账号。 产品类型 按需资源归属的产品类型。 规格 按需资源的规格。 资源名称/ID 按需资源的资源名称/资源ID。 企业项目 按需资源归属的企业项目。 按需用量 按需资源在指定历史周期内的使用量。 预计月度支出 查询的历史时间段中,按需资源月度消费的预计数据。 周期 为对应按需产品推荐的包周期类型。 月度摊销成本 按需产品转包年/包月后,预计的月度摊销金额。 预计月度节省 按需产品转包年/包月后,预计可节省的金额。 预计月度节省=预计月度支出-月度摊销成本。 盈亏平衡时间 包月时,盈亏平衡时间=推荐的包周期价格÷(预计月度支出÷730*24),单位为天。 包年时,盈亏平衡时间=推荐的包周期价格÷预计月度支出,单位为月。 操作 单击“按需转包周期”,可跳转到对应云服务的控制台,根据页面提示进行转包年/包月操作。 说明: 按需转包年/包月操作前,建议和业务团队确认使用场景。 财务托管的企业主,不能针对企业子的资源直接进行按需转包年/包月的处理,建议下载优化评估记录提供给企业子参考。
  • Redis企业版与基础版差异 DCS企业版为全自研的版本,100%兼容开源Redis软件,由传统的单master-单worker线程模型升级为master-N*worker线程模型,每个worker线程都可承担端口监听(监听建立网络链接的请求)、accept请求(接纳并建立网络链接)、读取数据(从网络链接如socket读写数据)和解析协议(解析并处理Redis命令等),依托于服务器计算能力的提升,整体性能N倍提升。 表1 企业版和基础版的能力对比 对比项 DCS基础版 DCS企业版 兼容开源Redis版本 兼容开源Redis 4.0/5.0/6.0,单线程 兼容开源Redis 6.0,多线程 性能 单分片QPS达10万/秒,最大时延1ms 企业版高性能型:单分片QPS达40万/秒 企业版存储型:单分片QPS达7万/秒 最大时延1ms 实例规格 提供单机、主备、集群、读写分离多种实例类型: 单机、主备实例可选择128MB-64G缓存容量 读写分离实例可选择8G-32G多种缓存容量 集群实例最大规格达2048GB 目前仅提供主备实例类型,可选择企业版高性能型和企业版存储型: 企业版高性能型可选择8GB-64GB内存容量 企业版存储型可选择8GB-32GB内存容量,最大存储容量(SSD磁盘容量)可达256GB 更多企业版高性能型和存储型的差异请参考表2。 数据安全 支持细粒度授权和IP白名单 除单机实例外,均支持持久化和数据备份 支持跨AZ容灾 支持异常自动切换 支持一键在线扩容和变更缓存类型 支持细粒度授权和安全组配置 支持持久化和数据备份 支持跨AZ容灾 支持异常自动切换 支持一键在线扩容 表2 企业版高性能型和存储型的差异 对比项 企业版高性能型 企业版存储型 QPS 单分片QPS达40万/秒,性能高于存储型。 单分片QPS达7万/秒。 存储方式 不支持SSD存储,纯内存。 使用aof的方式做数据持久化。 内存+SSD磁盘。 使用内存缓存热数据,全量数据存储在SSD磁盘中。 支持的备份文件格式 aof、rdb。 rdb。 父主题: 产品规格差异
  • 场景描述 当前华为云DCS支持将其他云厂商Redis、自建Redis的数据通过DCS控制台迁移到华为云DCS的Redis。 您需要先将其他云厂商Redis、自建Redis的数据备份下载到本地,然后将备份数据文件上传到华为云与DCS Redis实例同一租户下相同Region下的OBS桶中,最后在DCS控制台创建迁移任务,DCS从OBS桶中读取数据,将数据迁移到DCS的Redis中。 上传OBS桶的文件支持.aof、.rdb、.zip、.tar.gz格式,您可以直接上传.aof和.rdb文件,也可以将.aof和.rdb文件压缩成.zip或.tar.gz文件,然后将压缩后的文件上传到OBS桶。
  • 步骤2:创建OBS桶并上传备份文件 通过OBS Browser+客户端,上传备份数据文件到OBS桶。 如果上传的备份文件较小,且小于5GB,请执行2,通过OBS控制台上传即可; 如果上传的备份文件大于5GB,请按照OBS服务提供的超过5GB如何上传操作指导执行。 通过OBS控制台,上传备份数据文件到OBS桶。 如果上传的备份文件较小,且小于5GB,请执如下步骤: 创建OBS桶。 在创建过程中,以下两个参数请按要求设置,其他详细的创建步骤,请参考《对象存储服务用户指南》的“创建桶”章节。 选择“区域”。 OBS桶所在区域必须跟Redis目标实例所在区域相同。 设置“存储类别”,当前支持“标准存储”、“低频访问存储”和“归档存储”。 请不要选择“归档存储”,否则会导致备份文件迁移失败。 设置完成后,单击“立即创建”,等待OBS桶创建完成。 在OBS管理控制台的桶列表中,单击2.a中的桶名称,进入“概览”页面。 在左侧导航栏,单击“对象”。 在“对象”页签下,单击“上传对象”,系统弹出“上传对象”对话框。 指定对象的存储类别。 请不要选择“归档存储”,否则会导致备份文件迁移失败。 上传对象。 您可以拖拽本地文件或文件夹至“上传对象”区域框内添加待上传的文件,也可以通过单击“上传对象”区域框内的“添加文件”,选择本地文件添加。 单次最多支持100个文件同时上传,总大小不超过5GB。 图1 批量上传对象 可选:勾选“KMS加密”,用于加密上传文件。 单击“上传”。
  • 步骤3:创建迁移任务 登录分布式缓存服务控制台。 单击左侧菜单栏的“数据迁移”。页面显示迁移任务列表页面。 单击右上角的“创建备份导入任务”。 设置迁移任务名称和描述。 “源Redis”区域中,“数据来源”选择“OBS桶”,在“OBS桶名”中选择已上传备份文件的OBS桶。 根据需要选择“源DB”,您可以指定源端备份文件某一个DB中的数据,例如输入5时,则只迁移DB5中的数据;无需指定DB时,请保持置空,即迁移全部DB。 选择“是否多DB Proxy集群”,只有当源Redis数据为DCS Proxy集群实例,且开启了多DB(Proxy实例multi-db参数值为yes)时选择。 单击“添加备份文件”,选择需要迁移的备份文件。 图2 备份文件导入 图3 备份文件导入 在“目标Redis”区域,选择步骤1:准备目标Redis实例中准备的“目标Redis实例”。 如果目标Redis是密码访问模式,请输入密码后,单击“测试连接”,检查密码是否正确。免密访问的实例,请直接单击“测试连接”。 根据需要选择“目标DB”,您可以指定迁移数据到目标Redis的某一个DB中,例如输入5时,则迁移到目标Redis的DB5;不填表示不指定,默认迁移到与源端相同的DB中。 当源端为多DB,目标端为单DB的DCS实例时(单DB的实例只有DB0),需要源端的所有数据都在DB0,或者指定仅迁移源端某一DB中的数据并将目标端DB指定为0,否则会迁移失败。 DCS Redis的DB数请参见Redis实例是否支持多DB方式?。 单击“立即创建”。 确认迁移信息,然后单击“提交”,开始创建迁移任务。 可返回迁移任务列表中,观察对应的迁移任务的状态,迁移成功后,任务状态显示“成功”。
  • 前提条件 OBS桶所在区域必须跟Redis目标实例所在区域相同。例如,OBS桶和Redis所在的区域都为“华北-北京一”。 上传的数据文件必须为.aof、.rdb、.zip、.tar.gz的格式。 如果是其他云厂商的单机版Redis和主备版Redis,您需要在备份页面创建备份任务,然后下载备份文件。 如果是其他云厂商的集群版Redis,在备份页面创建备份后会有多个备份文件,每个备份文件对应集群中的一个分片,需要下载所有的备份文件,然后逐个上传到OBS桶。在迁移时,需要把所有分片的备份文件选中。
  • 场景描述 当前华为云DCS支持将其他云厂商Redis、自建Redis的数据通过DCS控制台迁移到华为云DCS的Redis。 您需要先将其他云厂商Redis、自建Redis的数据备份下载到本地,然后将备份数据文件上传到华为云与DCS Redis实例同一租户下相同Region下的OBS桶中,最后在DCS控制台创建迁移任务,DCS从OBS桶中读取数据,将数据迁移到DCS的Redis中。 上传OBS桶的文件支持.aof、.rdb、.zip、.tar.gz格式,您可以直接上传.aof和.rdb文件,也可以将.aof和.rdb文件压缩成.zip或.tar.gz文件,然后将压缩后的文件上传到OBS桶。
  • 步骤2:创建OBS桶并上传备份文件 通过OBS Browser+客户端,上传备份数据文件到OBS桶。 如果上传的备份文件较小,且小于5GB,请执行2,通过OBS控制台上传即可; 如果上传的备份文件大于5GB,请按照OBS服务提供的超过5GB如何上传操作指导执行。 通过OBS控制台,上传备份数据文件到OBS桶。 如果上传的备份文件较小,且小于5GB,请执如下步骤: 创建OBS桶。 在创建过程中,以下两个参数请按要求设置,其他详细的创建步骤,请参考《对象存储服务用户指南》的“创建桶”章节。 选择“区域”。 OBS桶所在区域必须跟Redis目标实例所在区域相同。 设置“存储类别”,当前支持“标准存储”、“低频访问存储”和“归档存储”。 请不要选择“归档存储”,否则会导致备份文件迁移失败。 设置完成后,单击“立即创建”,等待OBS桶创建完成。 在OBS管理控制台的桶列表中,单击2.a中的桶名称,进入“概览”页面。 在左侧导航栏,单击“对象”。 在“对象”页签下,单击“上传对象”,系统弹出“上传对象”对话框。 指定对象的存储类别。 请不要选择“归档存储”,否则会导致备份文件迁移失败。 上传对象。 您可以拖拽本地文件或文件夹至“上传对象”区域框内添加待上传的文件,也可以通过单击“上传对象”区域框内的“添加文件”,选择本地文件添加。 单次最多支持100个文件同时上传,总大小不超过5GB。 图1 批量上传对象 可选:勾选“KMS加密”,用于加密上传文件。 单击“上传”。
  • 前提条件 OBS桶所在区域必须跟Redis目标实例所在区域相同。例如,OBS桶和Redis所在的区域都为“华北-北京一”。 上传的数据文件必须为.aof、.rdb、.zip、.tar.gz的格式。 如果是其他云厂商的单机版Redis和主备版Redis,您需要在备份页面创建备份任务,然后下载备份文件。 如果是其他云厂商的集群版Redis,在备份页面创建备份后会有多个备份文件,每个备份文件对应集群中的一个分片,需要下载所有的备份文件,然后逐个上传到OBS桶。在迁移时,需要把所有分片的备份文件选中。
  • 步骤3:创建迁移任务 登录分布式缓存服务控制台。 单击左侧菜单栏的“数据迁移”。页面显示迁移任务列表页面。 单击右上角的“创建备份导入任务”。 设置迁移任务名称和描述。 “源Redis”区域中,“数据来源”选择“OBS桶”,在“OBS桶名”中选择已上传备份文件的OBS桶。 根据需要选择“源DB”,您可以指定源端备份文件某一个DB中的数据,例如输入5时,则只迁移DB5中的数据;无需指定DB时,请保持置空,即迁移全部DB。 选择“是否多DB Proxy集群”,只有当源Redis数据为DCS Proxy集群实例,且开启了多DB(Proxy实例multi-db参数值为yes)时选择。 单击“添加备份文件”,选择需要迁移的备份文件。 图2 备份文件导入 图3 备份文件导入 在“目标Redis”区域,选择步骤1:准备目标Redis实例中准备的“目标Redis实例”。 如果目标Redis是密码访问模式,请输入密码后,单击“测试连接”,检查密码是否正确。免密访问的实例,请直接单击“测试连接”。 根据需要选择“目标DB”,您可以指定迁移数据到目标Redis的某一个DB中,例如输入5时,则迁移到目标Redis的DB5;不填表示不指定,默认迁移到与源端相同的DB中。 当源端为多DB,目标端为单DB的DCS实例时(单DB的实例只有DB0),需要源端的所有数据都在DB0,或者指定仅迁移源端某一DB中的数据并将目标端DB指定为0,否则会迁移失败。 DCS Redis的DB数请参见Redis实例是否支持多DB方式?。 单击“立即创建”。 确认迁移信息,然后单击“提交”,开始创建迁移任务。 可返回迁移任务列表中,观察对应的迁移任务的状态,迁移成功后,任务状态显示“成功”。
  • 离线迁移(备份文件导入) 与在线迁移相比,离线迁移适宜于源实例与目标实例的网络无法连通的场景,或者源端实例部署在其他云厂商Redis服务中,无法实现在线迁移。 在DCS控制台创建Cluster集群实例。 注意集群的内存规格不能小于源端Cluster集群。 分别获取源端与目标端Cluster集群的Master节点IP地址与端口。 redis-cli -h {redis_address} -p {redis_port} -a {redis_password} cluster nodes 在命令返回的结果中,获取所有master节点的IP端口,如下如所示: 安装了Redis后,自带redis-cli命令。如CentOS下安装Redis:yum install redis 准备一台云服务器,并安装RedisShake RedisShake需要能访问目标端DCS Cluster集群,也需要绑定弹性公网IP,以便将备份文件上传到云服务器。 建议使用华为云的弹性云服务器(ECS),且ECS与DCS Cluster集群实例配置相同虚拟私有云、子网与安全组。 Redis-Shake工具可下载release版本,解压缩后即可使用。(此处以下载Redis-Shake v2.1.2为例,您可以根据实际需要选择其他Redis-Shake版本。) 如果源端集群部署在数据中心内网,则需在内网服务器上安装RedisShake,并参考下述步骤进行数据导出,然后将数据文件上传到云服务器。 导出RDB文件 编辑redis-shake工具配置文件redis-shake.conf,补充源端与目标端所有master节点的连接信息: source.type = cluster #如果无密码,本项不填 source.password_raw = {source_redis_password} #源Cluster集群所有master节点的IP地址与端口,以分号分隔 source.address = {master1_ip}:{master1_port};{master2_ip}:{master2_port}…{masterN_ip}:{masterN_port} 导出源Redis集群的RDB格式备份文件 ./redis-shake -type dump -conf redis-shake.conf 执行日志中出现如下信息时导出备份文件完成: execute runner[*run.CmdDump] finished! 如果源端Redis由于SYNC、PSYNC命令被云厂商禁用无法使用以上方法导出备份文件时,可以通过源端控制台导出,或联系源端技术支持。 导入RDB文件 将导出的RDB文件(含多个)上传到与云服务器上。云服务器与目标端DCS Cluster集群实例的网络连通。 编辑RedisShake配置文件。 编辑redis-shake工具配置文件redis-shake.conf,补充源端与目标端所有master节点的连接信息: target.type = cluster #如果无密码,本项不填 target.password_raw = {target_redis_password} #目标Cluster集群所有master节点的IP地址与端口,以分号分隔 target.address = {master1_ip}:{master1_port};{master2_ip}:{master2_port}…{masterN_ip}:{masterN_port} #需要导入的rdb文件列表,用分号分隔 rdb.input = {local_dump.0};{local_dump.1};{local_dump.2};{local_dump.3} 保存并退出文件编辑。 使用如下命令导入rdb文件到目标Cluster集群: ./redis-shake -type restore -conf redis-shake.conf 执行日志中出现如下信息时导入备份文件完成: Enabled http stats, set status (incr), and wait forever. 迁移后验证 数据同步结束后,可使用redis-cli工具连接DCS Cluster集群,通过info命令查看Keyspace中的Key数量,确认数据是否完整导入。 如果数据不完整,可使用flushall或者flushdb命令清理实例中的缓存数据后重新同步。
  • 步骤1:安装Rump 下载Rump的release版本。 以64位Linux操作系统为例,执行以下命令: wget https://github.com/stickermule/rump/releases/download/0.0.3/rump-0.0.3-linux-amd64; 解压缩后,添加可执行权限。 mv rump-0.0.3-linux-amd64 rump; chmod +x rump;
  • 步骤2:迁移数据 rump -from {source_redis_address} -to {target_redis_address} 参数/选项说明: {source_redis_address} 源Redis实例地址,格式为:redis://[user:password@]host:port/db,中括号部分为可选项,实例设置了密码访问时需要填写密码,格式遵循RFC 3986规范。注意用户名可为空,但冒号不能省略,例如redis://:mypassword@192.168.0.45:6379/1。 db为数据库编号,不传则默认为0。 {target_redis_address} 目标Redis实例地址,格式与from相同。 以下示例表示将本地Redis数据库的第0个DB的数据迁移到192.168.0.153这台Redis数据库中,其中密码以*替代显示。 [root@ecs ~]# ./rump -from redis://127.0.0.1:6379/0 -to redis://:******@192.168.0.153:6379/0 .Sync done. [root@ecs ~]#
  • 迁移原理 Rump使用SCAN来获取keys,用DUMP/RESTORE来get/set值。 SCAN是一个时间复杂度O(1) 的命令,可以快速获得所有的key。DUMP/RESTORE使读/写值独立于关键工作。 以下是Rump的主要特性: 通过SCAN非阻塞的获取key,避免KEYS命令造成Redis服务阻塞。 支持所有数据类型的迁移。 把SCAN和DUMP/RESTORE操作放在同一个管道中,利用pipeline提升数据迁移过程中的网络效率。 不使用任何临时文件,不占用磁盘空间。 使用带缓冲区的channels,提升源服务器的性能。 Rump工具不支持迁移到DCS集群实例。请改用其他工具,如redis-shake或Redis-cli。 Redis实例的密码不能包含#@:等特殊字符,避免迁移命令解析出错。 建议停业务迁移。迁移过程中如果不断写入新的数据,可能会丢失少量Key。
  • 前提条件 已在华为云创建Redis实例。 已在华为云创建用于运行Redis-shake的弹性云服务器(ECS)。 创建的ECS需要选择与Redis实例相同的VPC,并且需要绑定弹性公网IP。 Rump模式不支持增量数据迁移,建议您先停止源端Redis的写入再进行迁移,防止数据不一致。 该方案配置只支持同DB映射迁移,异DB映射迁移该方案配置不适用。 源端为多DB使用(有非DB0的DB使用),华为云DCS为Proxy集群时,DCS需要开启多DB模式,否则会迁移失败(单DB0的Proxy集群不支持select命令)。 源端为多DB使用(有非DB0的DB使用),华为云DCS为Cluster集群时,该方案不支持(DCS Cluster集群只支持DB0模式)。
  • 操作步骤 分别在华为云ECS和源端转发服务器上安装Nginx,本文以ECS操作系统为Centos7.x为例进行安装,不同操作系统命令稍有不同。 执行以下命令,添加Nginx到yum源。 sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm 添加完之后,执行以下命令,查看是否已经添加成功。 yum search nginx 添加成功之后,执行以下命令,安装Nginx。 sudo yum install -y nginx 执行以下命令安装stream模块。 yum install nginx-mod-stream --skip-broken 启动Nginx并设置为开机自动运行。 sudo systemctl start nginx.service sudo systemctl enable nginx.service 在本地浏览器中输入服务器地址(ECS公网IP地址),查看安装是否成功。 如果出现下面页面,则表示安装成功。 在源端Redis添加源端转发服务器的白名单。 在源端转发服务器配置安全组。 获取华为云ECS的公网IP地址。 配置源端转发服务器安全组入方向,添加华为云ECS的公网IP地址,并放开来自华为云ECS访问请求的端口(以6379为例)。 配置源端转发服务器的Nginx转发配置。 登录Linux源端转发服务器,执行命令打开并修改配置文件。 cd /etc/nginx vi nginx.conf 转发配置示例如下: stream { server { listen 6379; proxy_pass {source_instance_address}:{port}; } } 其中,6379为源端转发服务器本机监听端口,{source_instance_address}和{port}为源端Redis实例的连接地址和端口。 配置目的:通过访问源端转发服务器本机监听端口6379,访问源端Redis。 注意:以上配置必须配置在如下图所示的位置。 图2 配置位置要求 重启Nginx服务。 service nginx restart 验证启动是否成功。 netstat -an|grep 6379 端口在监听状态,Nginx启动成功。 图3 验证结果 配置华为云ECS的Nginx转发配置。 登录Linux华为云ECS,执行命令打开并修改配置文件。 cd /etc/nginx vi nginx.conf 配置示例如下: stream { server { listen 6666; proxy_pass {source_ecs_address}:6379; } } 其中,6666为华为云ECS本机监听端口,{source_ecs_address}为源端转发服务器公网IP地址,6379为源端转发服务器Nginx的监听端口。 配置目的:通过访问华为云ECS本机监听端口6666,访问源端转发服务器。 注意:以上配置必须配置在如下图所示的位置。 图4 配置位置要求 重启Nginx服务。 service nginx restart 验证启动是否成功。 netstat -an|grep 6666 端口在监听状态,Nginx启动成功。 图5 验证结果 在华为云ECS执行以下命令测试6666端口的网络连接。 redis-cli -h {target_ecs_address} -p 6666 -a {password} 其中,{target_ecs_address}为华为云ECS公网IP地址,6666为华为云ECS监听端口,{password}为源端Redis密码,如无密码可不填。 图6 连接示例 准备迁移工具Redis-shake。 登录华为云ECS。 在华为云ECS中执行以下命令下载Redis-shake,本文以下载2.0.3版本为例进行说明。您可以根据实际需要下载其他Redis-Shake版本。 wget https://github.com/tair-opensource/RedisShake/releases/download/release-v2.0.3-20200724/redis-shake-v2.0.3.tar.gz 执行命令解压Redis-shake文件。 tar -xvf redis-shake-v2.0.3.tar.gz 配置Redis-shake的配置文件。 执行命令进入解压后的目录。 cd redis-shake-v2.0.3 修改配置文件redis-shake.conf。 vim redis-shake.conf 修改源端Redis信息配置: source.type 源端redis实例类型,单机、主备、proxy集群实例都选择standalone,cluster实例选择cluster。 source.address 华为云ECS公网IP地址和映射源端转发服务器的端口(华为云ECS监听端口6666),用英文冒号隔开。 source.password_raw 源端待迁移Redis实例的密码,如未设置密码,无需填写。 修改目标端DCS信息配置: target.type 华为云Redis实例类型,单机、主备、proxy集群实例都选择standalone,cluster实例选择cluster。 target.address 华为云Redis实例的连接地址和端口,用英文冒号隔开。 target.password_raw 华为云Redis实例的密码,如未设置密码,无需填写。 按下Esc键退出编辑模式,输入:wq!按回车键保存配置并退出编辑界面。 执行命令启动Redis-shake并使用rump(在线全量)模式开始数据迁移。 ./redis-shake.linux -conf redis-shake.conf -type rump 图7 迁移过程 图8 迁移结果 迁移完成后,请使用redis-cli工具连接源Redis和目标Redis,确认数据的完整性。 分别连接源Redis和目标Redis。 连接操作请参考redis-cli连接。 输入info keyspace,查看keys参数和expires参数的值。 对比源Redis和目标Redis的keys参数分别减去expires参数的差值。如果差值一致,表示数据完整,迁移正常。 删除Redis-shake配置文件。
  • 未知或未支持的命令 未知或未支持的命令的处理建议: 检查源Redis有没有放通相关命令,如SYNC和PSYNC,需要联系技术支持放通命令。 在线迁移,必须满足源Redis和目标Redis的网络相通、源Redis已放通SYNC和PSYNC命令这两个前提,否则,会迁移失败。 网络 检查源Redis、目标Redis、迁移任务所需虚拟机是否在同一个VPC,如果是同一个VPC,则检查安全组(Redis 3.0实例)或白名单(Redis 4.0/5.0实例)是否放通端口和IP,确保网络是连通的;如果不在同一个VPC,则需要建立VPC对等连接,打通网络。 源Redis和目标Redis必须允许迁移任务底层虚拟机访问。实例安全组或白名单配置,请参考配置安全组、配置白名单。 源Redis和目标Redis属于不同的云厂商,请参考云专线打通网络。 命令 默认情况下,一般云厂商都是禁用了SYNC和PSYNC命令,如果要放通,需要联系云厂商运维人员放通命令。 华为云内部进行迁移: 自建Redis迁移至DCS,默认没有禁用SYNC和PSYNC命令; 华为云DCS服务之间进行迁移,如果是同一账号相同Region进行在线迁移,在执行迁移时,会自动放通SYNC和PSYNC命令; 如果是不同Region或相同Region不同账号进行在线迁移,不会自动放通SYNC和PSYNC命令,无法使用在线迁移。推荐使用备份文件导入方式迁移。 其他云厂商迁移到华为云: 一般云厂商都是禁用了SYNC和PSYNC命令,如果使用在线迁移功能,需要联系源端的云厂商运维人员放通此命令,离线迁移,推荐使用备份文件导入方式。
  • 同步数据失败 同步数据失败的处理建议: 错误信息包含“key name is busy”,目标Redis对应的key已经存在,删除目标Redis报错的key。 错误信息包含“not in the same slot“,建议进行业务改造,不要在多key命令里面用跨slot的key;也可以把目标Redis用主备实例代替proxy集群实例。 错误信息中包含“read: connection reset by peer”,源Redis为主备,且迁移过程中,频繁发生主备倒换,请分析源Redis是否存在大Key,如果源Redis存在大key,建议将大key打散成多个小key后再迁移;也可强行关闭主备倒换,等数据迁移完毕后再开启主备倒换,命令:config set slave-priority 0。如果目标Redis为proxy集群,请排查pipeline阈值大小,建议调整proxy节点pipeline阈值为5W,命令: proxy.config set client-max-pipeline 50000。
  • 同步数据失败,源节点:{0},目标节点:{1} 同步数据失败的处理建议: 分析源Redis是否存在大Key,如果源Redis存在大key,建议将大key打散成多个小key后再迁移。 确保目标Redis规格不小于源Redis。查看规格步骤参见查看实例信息; 参见Redis连接失败问题排查和解决。 排查源Redis规格和迁移机内存大小,迁移机的内存小,源redis数据量过大,迁移速度过慢使数据堆积在迁移机上时,也会导致该类问题,此情况建议扩容迁移机规格。
  • 执行命令异常 执行命令异常的处理建议: 错误信息中包含“listening-port”和“REPLCONF”相关,请检查源Redis是否放通SYNC和PSYNC命令,迁移任务底层资源与源Redis、目标Redis网络是否连通。 在线迁移,必须满足源Redis和目标Redis的网络相通、源Redis已放通SYNC和PSYNC命令这两个前提,否则,会迁移失败。 网络 检查源Redis、目标Redis、迁移任务所需虚拟机是否在同一个VPC,如果是同一个VPC,则检查安全组(Redis 3.0实例)或白名单(Redis 4.0/5.0实例)是否放通端口和IP,确保网络是连通的;如果不在同一个VPC,则需要建立VPC对等连接,打通网络。 源Redis和目标Redis必须允许迁移任务底层虚拟机访问。实例安全组或白名单配置,请参考配置安全组、配置白名单。 源Redis和目标Redis属于不同的云厂商,请参考云专线打通网络。 命令 默认情况下,一般云厂商都是禁用了SYNC和PSYNC命令,如果要放通,需要联系云厂商运维人员放通命令。 华为云内部进行迁移: 自建Redis迁移至DCS,默认没有禁用SYNC和PSYNC命令; 华为云DCS服务之间进行迁移,如果是同一账号相同Region进行在线迁移,在执行迁移时,会自动放通SYNC和PSYNC命令; 如果是不同Region或相同Region不同账号进行在线迁移,不会自动放通SYNC和PSYNC命令,无法使用在线迁移。推荐使用备份文件导入方式迁移。 其他云厂商迁移到华为云: 一般云厂商都是禁用了SYNC和PSYNC命令,如果使用在线迁移功能,需要联系源端的云厂商运维人员放通此命令,离线迁移,推荐使用备份文件导入方式。 错误信息包含“read error”,且为全量迁移过程中失败,数据量过大的情况下,建议开始迁移时不要选择“自动重连”模式,等到进入“增量迁移”后,再选择“自动重连”模式,且调大repl-timeout的时间值;同时建议调整源端output buffer参数,buffer参数的大小需要根据源端内存大小来定,比如源端24G的内存大小,可以调整为2G的buffer,命令: client-output-buffer-limit slave 2gb 2gb 600 。 错误信息中包含“write: connection reset by peer”,可能原因目标Redis内存规格太小导致内存写满,无法同步数据,建议扩大目标Redis实例规格,至少与源端实例规格持平。 错误信息中包含“read: connection reset by peer”,源Redis为主备,且迁移过程中,频繁发生主备倒换,请分析源Redis是否存在大Key,如果源Redis存在大key,建议将大key打散成多个小key后再迁移。也可强行关闭主备倒换,等数据迁移完毕后再开启主备倒换,命令:config set slave-priority 0。如果目标Redis为proxy集群,请排查pipeline阈值大小,建议调整proxy节点pipeline阈值为5W,命令: proxy.config set client-max-pipeline 50000。 提供错误信息,联系技术支持。
  • 重新启动数据同步失败 重新启动数据同步失败的处理建议: 分析源Redis是否存在大Key,如果源Redis存在大key,建议将大key打散成多个小key后再迁移。 检查目标Redis的规格是否小于迁移数据大小、是否有其他任务在执行。 如果目标Redis的实例规格小于迁移数据大小,迁移过程中,内存被占满,会导致迁移失败。 如果目标Redis存在正在执行的主备倒换,建议联系技术支持关闭主备倒换后,重新执行数据迁移。待迁移完成后,重新开启主备倒换。 提供错误信息,联系技术支持。
  • 步骤5:配置在线迁移任务 创建完在线迁移任务之后,在“在线迁移”的列表,单击“配置”,配置在线迁移的源Redis、目标Redis等信息。 选择迁移方法。 支持“全量迁移”和“全量迁移+增量迁移”两种,“全量迁移”和“全量迁移+增量迁移”的功能及限制如表1所示。 表1 在线迁移方法说明 迁移类型 描述 全量迁移 该模式为Redis的一次性迁移,适用于可中断业务的迁移场景。全量迁移过程中,如果源Redis有数据更新,这部分更新数据不会被迁移到目标Redis。 全量迁移+增量迁移 该模式为Redis的持续性迁移,适用于对业务中断敏感的迁移场景。增量迁移阶段通过解析日志等技术, 持续保持源Redis和目标端Redis的数据一致。 增量迁移,迁移任务会在迁移开始后,一直保持迁移中状态,不会自动停止。需要您在合适时间,在“操作”列单击“停止”,手动停止迁移。停止后,源端数据不会造成丢失,只是目标端不再写入数据。增量迁移在传输链路网络稳定情况下是秒级时延,具体的时延情况依赖于网络链路的传输质量。 图1 选择迁移方法 配置“源Redis”和“目标Redis”。 Redis类型支持“云服务Redis”和“自建Redis”,需要根据迁移场景选择数据来源。 云服务Redis:当源端或目标Redis为DCS Redis,且与迁移任务处于相同VPC时,可以选择“云服务Redis”类型,并指定需要迁移的DCS Redis实例。 自建Redis:DCS Redis、其他云厂商Redis、自行搭建的Redis,都可以选择“自建Redis”类型,并输入Redis的连接地址。 当源Redis和目标Redis属于华为云的不同Region,则打通网路后,目标Redis实例无论是自建Redis或华为云Redis实例,在“目标Redis类型”区域,只能选中自建Redis,输入实例相关信息。 如果是密码访问模式实例,在输入连接实例密码后,单击密码右侧的“测试连接”,检查实例密码是否正确、网络是否连通。如果是免密访问的实例,请直接单击“测试连接”。 在“源DB”或“目标DB”中,您可以选择是否需要指定具体迁移的DB。例如源端输入5,目标端输入6时,表示迁移源Redis DB5中的数据到目标Redis的DB6;当源端不指定DB,目标端指定DB时,表示默认迁移源端的全部数据,到目标端指定的DB,当目标端不指定DB时,表示默认迁移到与源端对应的DB。 当源端为多DB,目标端为单DB的DCS实例时(单DB的实例只有DB0),需要源端的所有数据都在DB0,或者指定仅迁移源端某一DB中的数据并将目标端DB指定为0,否则会迁移失败。 DCS Redis的DB数请参见Redis实例是否支持多DB方式?。 单击“下一步”。 确认迁移信息,然后单击“提交”,开始创建迁移任务。 可返回迁移任务列表中,观察对应的迁移任务的状态,迁移成功后,任务状态显示“成功”。 如果是增量迁移,会一直保持迁移中状态,需要手动停止迁移。 如需停止迁移中的任务,勾选迁移任务左侧的方框,单击实例上方信息栏的“停止”,即可停止迁移。 数据迁移后,源端与目标端重复的Key会被覆盖。 如果出现迁移失败,可以单击迁移任务名称,进入迁移任务详情页面,查看“迁移日志”。
  • 迁移后验证 迁移完成后,请使用Redis-cli连接源Redis和目标Redis,确认数据的完整性。 连接源Redis和目标Redis。 输入info keyspace,查看keys参数和expires参数的值。 对比源Redis和目标Redis的keys参数分别减去expires参数的差值。如果差值一致,则表示数据完整,迁移正常。 注意:如果是全量迁移,迁移过程中源Redis更新的数据不会迁移到目标实例。
  • 前提条件 在迁移之前,请先阅读迁移方案概览,选择正确的迁移方案,了解当前DCS支持的在线迁移能力,选择适当的目标实例。 如果是单机/主备等多DB的源端实例迁移到Proxy集群实例,Proxy集群默认不开启多DB,仅有一个DB0,请先确保源端实例DB0以外的DB是否有数据,如果有,请先参考开启多DB操作开启Proxy集群多DB设置。 如果是单机/主备等多DB的源端实例迁移到Cluster集群实例,Cluster集群不支持多DB,仅有一个DB0,请先确保源端实例DB0以外的DB是否有数据,如果有,请将数据转存到DB0,否则会出现迁移失败,将数据转存到DB0的操作请参考使用Rump在线迁移。
  • 步骤4:创建在线迁移任务 登录分布式缓存服务控制台。 单击左侧菜单栏的“数据迁移”。页面显示迁移任务列表页面。 单击右上角的“创建在线迁移任务”。 设置迁移任务名称和描述。 配置在线迁移任务虚拟机资源的VPC、子网和安全组。 创建在线迁移任务时,需要选择迁移虚拟机资源的VPC和安全组,并确保迁移资源能访问源Redis和目标Redis实例。 创建的在线迁移任务会占用一个租户侧IP,即控制台上迁移任务对应的“迁移IP”。如果源端Redis或目标端Redis配置了白名单,需确保配置了迁移IP或关闭白名单限制。 迁移任务所选安全组的“出方向规则”需放通源端Redis和目标端Redis的IP和端口(安全组默认情况下为全部放通,则无需单独放通),以便迁移任务的虚拟机资源能访问源Redis和目标Redis。
  • 步骤:3:检查网络 检查源Redis、目标Redis、迁移任务资源所在VPC是否在同一个VPC内。 如果是,则执行步骤4:创建在线迁移任务;如果不是,执行2。 检查源Redis的VPC、目标Redis的VPC、迁移任务资源所在VPC的网络是否打通,确保迁移任务的虚拟机资源能访问源Redis和目标Redis。 如果已打通,则执行步骤4:创建在线迁移任务;如果没打通,则执行3。 执行相应操作,打通网络。 当源Redis和目标Redis都属于DCS同一region,请参考VPC对等连接说明,查看和创建对等连接,打通网络。 当源Redis和目标Redis属于DCS不同Region,请参考云连接,查看和创建云连接,打通网络。 当源Redis和目标Redis属于不同的云厂商,仅支持云专线打通网络,请参考云专线。
  • 场景描述 在满足源Redis和目标Redis的网络相通、源Redis已放通SYNC和PSYNC命令这两个前提下,使用在线迁移的方式,将源Redis中的数据全量迁移或增量迁移到目标Redis中。 如果源Redis禁用了SYNC和PSYNC命令,请务必放通后再执行在线迁移,否则迁移失败,选择DCS Redis实例进行在线迁移时,会自动放开SYNC命令。 在线迁移不支持公网方式直接迁移。 进行在线迁移时,建议将源端实例的参数repl-timeout配置为300秒,client-output-buffer-limit配置为实例最大内存的20%。 源端仅支持Redis 3.0及3.0以上的Redis版本。
  • 迁移方案 自建Redis,指的是在华为云、其他云厂商、本地数据中心自行搭建的Redis。 表2 迁移方案 迁移场景 工具 迁移案例 迁移说明 自建Redis迁移至DCS DCS控制台界面一键式迁移 如果自建Redis和DCS Redis实例网络连通,推荐使用在线迁移自建Redis。 如果自建Redis和DCS Redis实例网络不通,推荐使用备份文件迁移自建Redis。 - Redis-cli 使用Redis-cli迁移自建Redis(AOF文件) - 使用Redis-cli迁移自建Redis(RDB文件) - Redis-Shake 使用Redis-Shake工具迁移自建Redis Cluster集群 - DCS实例间迁移 DCS控制台界面一键式迁移 低版本Redis实例迁移到高版本Redis实例,例如Redis 3.0迁移至Redis 4.0/5.0/6.0: 如果源Redis实例和目标Redis实例的网络连通,推荐使用迁移任务在线迁移Redis实例。 如果网络不连通,推荐使用备份文件迁移不同Redis版本的实例。 由于Redis不同版本存在数据兼容问题,建议高版本不要迁移到低版本,否则迁移失败。 不同Region的Redis实例迁移,推荐使用备份文件迁移不同Region的实例。 由于DCS Redis实例默认是禁用了SYNC和PSYNC命令,在相同Region执行在线迁移时,会默认放通SYNC和PSYNC命令,但是在不同Region迁移时,没有放通该命令操作,所以无法使用在线迁移,推荐使用备份文件迁移。 不同账号的Redis实例迁移,例如从账号A迁移到账号B: 推荐使用备份文件迁移不同Redis版本的实例。 如果可以打通网络,也可以使用迁移任务在线迁移Redis实例。 - 其他云厂商Redis服务迁移至DCS DCS控制台界面一键式迁移 如果其他云厂商Redis服务,没有禁用SYNC和PSYNC命令,推荐使用迁移任务在线迁移其他云厂商Redis。 如果其他云厂商Redis服务,禁用了SYNC和PSYNC命令,推荐使用备份文件离线迁移其他云厂商Redis。 如果需要使用在线迁移,建议联系其他云厂商运维人员放通SYNC和PSYNC命令。 Rump 使用Rump在线迁移其他云厂商Redis - Redis-Shake 使用Redis-Shake离线迁移其他云厂商Redis - 使用Redis-shake在线迁移其他云厂商Redis -
  • 迁移工具 表1 Redis迁移工具对比 工具/命令/服务 特点 说明 DCS控制台界面一键式迁移 操作简单,同时支持在线迁移和离线迁移(备份文件导入)两种方式,其中在线迁移支持增量数据迁移。 离线迁移,适用于源Redis和目标Redis网络不连通、源Redis不支持SYNC/PSYNC命令的场景。需要将数据备份文件导入到OBS,DCS从OBS桶中读取数据,将数据迁移到DCS的Redis中。 在线迁移,涉及到SYNC/PSYNC命令,适用于源Redis放通了SYNC/PSYNC命令的场景。支持将源Redis中的数据全量迁移或增量迁移到目标Redis中。 Redis-cli Redis自带命令行工具,支持导出RDB文件,也支持将持久化的AOF文件整库导入。 AOF文件为所有数据更改命令的全量集合,数据文件稍大。 - Rump 支持在线迁移,支持在同一个实例的不同数据库之间,以及不同实例的数据库之间迁移。 不支持增量迁移。 建议停业务后迁移,避免出现Key丢失。详情参考使用Rump在线迁移其他云厂商Redis。 Redis-Shake 在线迁移和离线迁移均支持的一款开源工具。 适用于Cluster集群的数据迁移。 自行开发迁移脚本 灵活,根据实际情况适配。 -
共100000条