云服务器内容精选

  • 排查步骤 单击已创建的迁移任务名称,进入迁移日志。 查看迁移日志。参照迁移故障处理,根据对应的错误日志信息,做对应排查,例如: 图1 查看迁移日志 检查迁移方案是否选择正确。 根据自建Redis迁移至D CS 、DCS实例间迁移、其他云厂商Redis服务迁移至DCS的不同场景,选择合适的迁移方案,例如,DCS实例间迁移,高版本不支持迁移到低版本。 迁移方案选择不正确,会导致迁移失败,具体迁移方案,请查看迁移方案介绍。 检查源Redis是否放通SYNC和PSYNC命令,迁移任务底层资源与源Redis、目标Redis网络是否连通。 如果是在线迁移,才涉及该操作。 在线迁移,必须满足源Redis和目标Redis的网络相通、源Redis已放通SYNC和PSYNC命令这两个前提,否则,会迁移失败。 网络 检查源Redis、目标Redis、迁移任务所需虚拟机是否在同一个VPC,如果是同一个VPC,则检查安全组(Redis 3.0/Redis 6.0企业版实例)或白名单(Redis 4.0/5.0/6.0基础版实例)是否放通端口和IP,确保网络是连通的;如果不在同一个VPC,则需要建立VPC对等连接,打通网络。 源Redis和目标Redis必须允许迁移任务底层虚拟机访问。实例安全组或白名单配置,请参考配置安全组、配置白名单。 迁移任务的安全组“出方向规则”需放通端口和IP,确保迁移任务底层虚拟机可以访问源Redis和目标Redis,请参考配置安全组。 源Redis和目标Redis属于不同的云厂商,请参考云专线打通网络。 Redis 4.0/5.0/6.0基础版实例需要放通白名单的目的,是允许迁移任务底层虚拟机可以访问源Redis和目标Redis(迁移任务底层虚拟机会占用一个IP)。同样,如果是Redis 3.0/Redis 6.0企业版实例,需要配置实例安全组的入方向规则对迁移任务底层虚拟机放通。 命令 默认情况下,一般云厂商都是禁用了SYNC和PSYNC命令,如果要放通,需要联系云厂商运维人员放通命令。 华为云内部进行迁移: 自建Redis迁移至DCS,默认没有禁用SYNC和PSYNC命令; 华为云DCS服务之间进行迁移,如果是同一账号相同Region进行在线迁移,在执行迁移时,会自动放通SYNC和PSYNC命令; 如果是不同Region或相同Region不同账号进行在线迁移,不会自动放通SYNC和PSYNC命令,无法使用在线迁移。推荐使用备份文件导入方式迁移。 其他云厂商迁移到华为云: 一般云厂商都是禁用了SYNC和PSYNC命令,如果使用在线迁移功能,需要联系源端的云厂商运维人员放通此命令,离线迁移,推荐使用备份文件导入方式。 检查源Redis是否存在大Key。操作请参见分析源Redis是否存在大Key。 如果源Redis存在大key,建议将大key打散成多个小key后再迁移。 检查目标Redis的规格是否大于迁移数据大小、是否有其他任务在执行。 如果目标Redis的实例规格小于迁移数据大小,迁移过程中,内存被占满,会导致迁移失败。 如果目标Redis存在正在执行的主备倒换,建议联系技术支持关闭主备倒换后,重新执行数据迁移。待迁移完成后,重新开启主备倒换。 如果是单机/主备实例迁移到集群实例,请检查: 如果是单机/主备实例迁移到Proxy集群实例,Proxy集群默认不开启多DB,仅有一个DB0,请先确保单机/主备实例DB0以外的DB是否有数据,如果有,请先参考开启多DB操作开启Proxy集群多DB设置。 如果是单机/主备实例迁移到Cluster集群实例,Cluster集群不支持多DB,仅有一个DB0,请先确保单机/主备实例DB0以外的DB是否有数据,如果有,请将数据转存到DB0,否则会出现迁移失败,将数据转存到DB0的操作请参考使用Rump在线迁移。 检查迁移操作是否正确。 检查填写的IP地址、实例密码是否正确。 排查白名单。 如果无法解决,请联系技术支持。
  • 场景描述 在满足源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版本。
  • 前提条件 在迁移之前,请先阅读迁移方案概览,选择正确的迁移方案,了解当前DCS支持的在线迁移能力,选择适当的目标实例。 如果是单机/主备等多DB的源端实例迁移到Proxy集群实例,Proxy集群默认不开启多DB,仅有一个DB0,请先确保源端实例DB0以外的DB是否有数据,如果有,请先参考开启多DB操作开启Proxy集群多DB设置。 如果是单机/主备等多DB的源端实例迁移到Cluster集群实例,Cluster集群不支持多DB,仅有一个DB0,请先确保源端实例DB0以外的DB是否有数据,如果有,请将数据转存到DB0,否则会出现迁移失败,将数据转存到DB0的操作请参考使用Rump在线迁移。
  • 步骤: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属于不同的云厂商,仅支持云专线打通网络,请参考云专线。
  • 步骤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会被覆盖。 如果出现迁移失败,可以单击迁移任务名称,进入迁移任务详情页面,查看“迁移日志”。
  • 步骤4:创建在线迁移任务 登录分布式缓存服务控制台。 单击左侧菜单栏的“数据迁移”。页面显示迁移任务列表页面。 单击右上角的“创建在线迁移任务”。 设置迁移任务名称和描述。 配置在线迁移任务虚拟机资源的VPC、子网和安全组。 创建在线迁移任务时,需要选择迁移虚拟机资源的VPC和安全组,并确保迁移资源能访问源Redis和目标Redis实例。 创建的在线迁移任务会占用一个租户侧IP,即控制台上迁移任务对应的“迁移IP”。如果源端Redis或目标端Redis配置了白名单,需确保配置了迁移IP或关闭白名单限制。 迁移任务所选安全组的“出方向规则”需放通源端Redis和目标端Redis的IP和端口(安全组默认情况下为全部放通,则无需单独放通),以便迁移任务的虚拟机资源能访问源Redis和目标Redis。
  • 迁移后验证 迁移完成后,请使用Redis-cli连接源Redis和目标Redis,确认数据的完整性。 连接源Redis和目标Redis。 输入info keyspace,查看keys参数和expires参数的值。 对比源Redis和目标Redis的keys参数分别减去expires参数的差值。如果差值一致,则表示数据完整,迁移正常。 注意:如果是全量迁移,迁移过程中源Redis更新的数据不会迁移到目标实例。
  • 步骤2:导出RDB文件 建议选择业务量较少的时间段进行迁移。 导出Redis源生集群的数据时,需要针对集群的每个节点分别导出数据,然后逐一导入。 使用如下命令导出RDB文件: redis-cli -h {source_redis_address} -p 6379 -a {password} --rdb {output.rdb} 执行命令后回显"Transfer finished with success.",表示文件导出成功。
  • 迁移介绍 Redis-cli是Redis自带的一个命令行工具,安装Redis后即可直接使用Redis-cli工具。 Redis-cli提供了RDB文件导出功能,如果Redis服务不支持获取AOF文件,可以尝试通过Redis-cli获取RDB文件。然后再通过其他工具(如Redis-Shake)导入到DCS的缓存实例中。 本文主要介绍在Linux系统中进行操作。 下载Redis,请使用以下命令获取,安装编译后即可使用Redis-cli。 wget http://download.redis.io/releases/redis-5.0.8.tar.gz 源Redis实例必须支持“SYNC”命令,因为使用Redis-cli导出RDB文件依赖SYNC命令。 DCS的Redis 4.0/5.0/6.0版本实例,不支持SYNC,不能使用此命令导出为RDB文件,主备实例如需本地备份,请从控制台的备份恢复功能模块中下载RDB文件。
  • 步骤1:导出前准备 对于主备或集群实例,数据写入RDB文件有一定的时延,时延策略配置在redis.conf文件中。因此,建议先了解待迁移redis实例的RDB策略配置,然后暂停业务系统并往Redis实例写入满足数量条件的测试key,确保RDB文件为最新生成。 对于云厂商提供的Redis服务,可以咨询云服务技术支持,了解rdb文件的数据写入策略配置。 例如,redis.conf中对RDB的默认策略配置如下: save 900 1 //900秒内有数据变更则写入RDB文件 save 300 10 //300秒内有10条以上数据变更则写入RDB文件 save 60 10000 //60秒内有10000条以上数据变更则写入RDB文件 因此,可以参考以上数据写入RDB策略,在停止业务系统向Redis实例写入数据后,主动写入测试数据若干,触发策略并写入RDB文件,确保业务数据均已同步导RDB文件中。 测试数据可以在导入后删除。 如果有某个数据库没有被业务系统使用,可以将测试数据写入该数据库,待导入DCS后,使用flushdb命令清空该库。
  • 步骤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加密”,用于加密上传文件。 单击“上传”。
  • 场景描述 当前华为云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桶。
  • 前提条件 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 备份文件导入 在“目标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 Cluster集群迁移到DCS Cluster集群的场景,且两端集群实例能够网络连通,或者有一台中转服务器能够连通两端集群实例。 部署在其他云厂商Redis服务上的Cluster集群数据,由于SYNC、PSYNC命令被云厂商禁用,暂不支持在线迁移。 在DCS控制台创建Cluster集群实例。 注意集群的内存规格不能小于源端Cluster集群。 准备一台云服务器,并安装Redis-shake。 RedisShake既能访问源端Cluster集群,也需要能访问目标端DCS Cluster集群,需要绑定弹性公网IP。 建议使用华为云的弹性云服务器(ECS),且ECS与DCS Cluster集群实例配置相同虚拟私有云、子网与安全组。如果源端Cluster集群在本地或者其他云厂商的服务器上自建,则需要允许被公网访问。 Redis-shake工具可下载release版本,解压缩后即可使用。(此处以下载Redis-shake v2.1.2为例,您可以根据实际需要选择其他Redis-shake版本。) 获取源集群和目标集群的Master节点和IP。 在线迁移需要将各个节点数据分别迁移。使用如下命令查询源和目标Cluster集群的所有节点的IP地址与端口: redis-cli -h {redis_address} -p {redis_port} -a {redis_password} cluster nodes 在命令返回的结果中,获取所有master节点的IP端口,如下如所示: 安装了Redis后,自带redis-cli命令。如CentOS下安装Redis:yum install redis 编辑Redis-shake配置文件。 编辑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} 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} 保存并退出文件编辑。 在线迁移,同步数据。 使用如下命令同步源Redis集群和目标Redis集群数据: ./redis-shake -type sync -conf redis-shake.conf 执行日志中出现如下信息,代表全量数据同步完成,进入增量同步阶段: sync rdb done. 执行日志出现如下信息时,代表增量同步无新增内容,可手动停止同步(Ctrl + C): sync: +forwardCommands=0 +filterCommands=0 +writeBytes=0 图1 redis-shake在线迁移示意图 迁移后验证。 数据同步结束后,可使用redis-cli工具连接DCS Cluster集群,通过info命令查看Keyspace中的Key数量,确认数据是否完整导入。 如果数据不完整,可使用flushall或者flushdb命令清理实例中的缓存数据后重新同步。 清理RedisShake配置文件。