华为云用户手册

  • 未知或未支持的命令 未知或未支持的命令的处理建议: 检查源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迁移至D CS ,默认没有禁用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。
  • 重新启动数据同步失败 重新启动数据同步失败的处理建议: 分析源Redis是否存在大Key,如果源Redis存在大key,建议将大key打散成多个小key后再迁移。 检查目标Redis的规格是否小于迁移数据大小、是否有其他任务在执行。 如果目标Redis的实例规格小于迁移数据大小,迁移过程中,内存被占满,会导致迁移失败。 如果目标Redis存在正在执行的主备倒换,建议联系技术支持关闭主备倒换后,重新执行数据迁移。待迁移完成后,重新开启主备倒换。 提供错误信息,联系技术支持。
  • 同步数据失败,源节点:{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。 提供错误信息,联系技术支持。
  • 步骤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方式?。 单击“立即创建”。 确认迁移信息,然后单击“提交”,开始创建迁移任务。 可返回迁移任务列表中,观察对应的迁移任务的状态,迁移成功后,任务状态显示“成功”。
  • 步骤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桶。在迁移时,需要把所有分片的备份文件选中。
  • 怎么放通SYNC和PSYNC命令? DCS云服务内部进行迁移: 自建Redis迁移至DCS,默认没有禁用SYNC和PSYNC命令; DCS的Redis之间进行迁移,如果是同一账号相同Region进行在线迁移,在执行迁移时,会自动放通SYNC和PSYNC命令; 如果是不同Region或相同Region不同账号进行的在线迁移,不会自动放通SYNC和PSYNC命令,无法使用控制台的在线迁移。推荐使用备份文件导入方式迁移。 其他云厂商迁移到DCS云服务: 一般云厂商都是禁用了SYNC和PSYNC命令,如果使用DCS控制台的在线迁移功能,需要联系源端的云厂商运维人员放通此命令。离线迁移,推荐使用备份文件导入方式。 如果不需要增量迁移,可以参考使用Redis-shake工具在线全量迁移其他云厂商Redis进行全量迁移,该方式不依赖于SYNC和PSYNC。 父主题: 迁移常见问题
  • 步骤: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属于不同的云厂商,仅支持云专线打通网络,请参考云专线。
  • 前提条件 在迁移之前,请先阅读迁移方案概览,选择正确的迁移方案,了解当前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。
  • 步骤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更新的数据不会迁移到目标实例。
  • 场景描述 在满足源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集群的数据迁移。 自行开发迁移脚本 灵活,根据实际情况适配。 -
  • 步骤: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属于不同的云厂商,仅支持云专线打通网络,请参考云专线。
  • 步骤4:创建在线迁移任务 登录分布式缓存服务控制台。 单击左侧菜单栏的“数据迁移”。页面显示迁移任务列表页面。 单击右上角的“创建在线迁移任务”。 设置迁移任务名称和描述。 配置在线迁移任务虚拟机资源的VPC、子网和安全组。 创建在线迁移任务时,需要选择迁移虚拟机资源的VPC和安全组,并确保迁移资源能访问源Redis和目标Redis实例。 创建的在线迁移任务会占用一个租户侧IP,即控制台上迁移任务对应的“迁移IP”。如果源端Redis或目标端Redis配置了白名单,需确保配置了迁移IP或关闭白名单限制。 迁移任务所选安全组的“出方向规则”需放通源端Redis和目标端Redis的IP和端口(安全组默认情况下为全部放通,则无需单独放通),以便迁移任务的虚拟机资源能访问源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更新的数据不会迁移到目标实例。
  • 场景描述 在满足源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在线迁移。
  • 可以裁剪镜像吗? 在导入外部镜像文件时,建议您使用操作系统官方发行版本进行系统构建,避免对发行版本进行裁剪及高度定制,以减少问题发生概率。 操作系统发行版本由操作系统厂商进行不定期版本更迭,部分系统版本厂商已停止维护,不再发布问题修复及安全补丁,建议及时关注厂商公告进行系统升级更新,保证您系统的健壮性。 如果操作系统版本停止了服务与支持,您仍然可以使用该操作系统版本的 镜像服务 ,但华为云也会停止对这些镜像提供技术支持,包含新问题的定位和缺陷修复。更多操作系统的服务与支持计划请参见:镜像停止服务与支持计划。 父主题: 镜像咨询类
  • CentOS 7/Fedora 28操作系统:安装Cloud-Init时提示未安装所需的C编译器 问题描述 Cloud-Init安装完成后,执行以下命令: cloud-init init --local 回显信息出现以下警告: /usr/lib/python2.5/site-packages/Cheetah/Compiler.py:1532: UserWarning: You don't have the C version of NameMapper installed! I'm disabling Cheetah's useStackFrames option as it is painfully slow with the Python version of NameMapper. You should get a copy of Cheetah with the compiled C version of NameMapper. "\nYou don't have the C version of NameMapper installed! 原因分析 出现该警告是因为在安装Cloud-Init时,需要编译C版本的NameMapper,但是该系统没有预装gcc,因此无法编译,这才导致C版本的NameMapper缺失。 处理方法 执行以下命令安装gcc: yum -y install gcc 然后再重新安装Cloud-Init。
  • Ubuntu 16.04/CentOS 7:Cloud-Init设置自启动失败 问题描述: 安装Cloud-Init后,执行以下命令设置Cloud-Init为开机自启动时,提示失败: systemctl enable cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service 回显信息如下所示: 图1 设置Cloud-Init自启动失败 解决方法: 执行以下命令回退配置 systemctl unmask cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service 执行以下命令,重新设置Cloud-Init为开机自启动 systemctl enable cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service 执行以下命令,检查Cloud-Init服务状态 systemctl status cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service 回显信息如下所示,提示failed且所有服务的状态都是inactive。 图2 检查Cloud-Init服务状态 图3 检查Cloud-Init服务状态 原因是系统查询Cloud-Init的地址指向/usr/bin/,但是实际安装路径指定的是/usr/local/bin,因此出现了上述错误。 执行以下命令,将cloud-init复制至usr/bin目录下。 cp /usr/local/cloud-init /usr/bin/ 执行以下命令,重启Cloud-Init。 systemctl restart cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service 图4 重启Cloud-Init 执行以下命令,检查Cloud-Init服务状态。 systemctl status cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service
  • Ubuntu 14.04:未安装chkconfig和systemctl 问题描述: 未安装chkconfig 解决方法: 执行以下命令安装chkconfig: apt-get update apt-get install sysv-rc-conf cp /usr/sbin/sysv-rc-conf /usr/sbin/chkconfig 安装完成后,执行以下命令查看版本号。 cloud-init -v 如果回显信息如下所示: -bash:/usr/bin/cloud-init:not found this command 解决方法:执行以下命令将cloud-init复制至usr/bin目录下。 cp /usr/local/bin/cloud-init /usr/bin/
  • Debian 9.5:查看版本号失败和Cloud-Init设置开启自启动失败 Cloud-Init安装完成后,执行以下命令查看版本号。 cloud-init -v 回显信息如下所示: -bash:/usr/bin/cloud-init:not found this command 解决方法:执行命令cp /usr/local/bin/cloud-init /usr/bin/,将cloud-init复制至usr/bin目录下。 执行命令cloud-init init --local 回显信息如下所示: 图5 设置Cloud-Init自启动回显信息 原因分析:未安装gcc导致无法编译。 解决方法: 执行以下命令安装gcc后重新安装Cloud-Init。 yum -y install gcc 执行以下命令设置Cloud-Init为开机自启动时提示失败: systemctl enable cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service 回显信息提示如下所示: 图6 设置Cloud-Init自启动提示失败 解决方法: 执行以下命令回退配置 systemctl unmask cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service 执行以下命令,重新设置Cloud-Init为开机自启动 systemctl enable cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service 执行以下命令,重启Cloud-Init systemctl restart cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service 然后执行命令systemctl status查看服务状态。回显信息如下所示: 图7 查看服务状态
  • CentOS 7/Fedora操作系统:Cloud-Init安装成功,使用镜像创建的云服务器无法使用新密码登录 问题描述 Cloud-Init安装成功后,生成镜像并申请云服务器,启动新的云服务器,发现新密码无效。使用旧密码登录进去后发现,网卡没有启动: 图8 网卡未启动 解决方法 登录创建镜像前的云服务器,打开dhcp配置文件“/etc/sysconfig/network-scripts/ifcfg-ethX”,注释HWADDR这一项。
共100000条