- 最新动态
- 功能总览
- 服务公告
- 产品介绍
- 计费说明
- 快速入门
- 用户指南
- 最佳实践
- API参考
- SDK参考
-
常见问题
- 实例类型/版本
- 实例特性
- 安全性
-
客户端和网络连接
- DCS实例支持公网访问吗?
- Redis连接失败问题排查和解决
- DCS实例是否支持跨VPC访问?
- Redis公网访问所需弹性IP是否收费?
- Redis连接时报错:“(error) NOAUTH Authentication required”。
- 客户Http的Server端关闭导致Redis访问失败
- 客户端出现概率性超时错误
- 使用Jedis连接池报错如何处理?
- 如何使用Redis-desktop-manager访问Redis实例?
- 使用SpringCloud时出现ERR Unsupported CONFIG subcommand怎么办?
- 客户端无法使用域名连接DCS缓存实例时如何处理?
- 本地环境是否可以连接缓存实例?
- 使用Redis实例的发布订阅(pubsub)有哪些注意事项?
- Redis 3.0实例公网开关被关闭是什么原因?
- 使用短连接访问Redis出现“Cannot assign requested address”错误
- 连接池选择及Jedis连接池参数配置建议
- 如何解决Lettuce 6.x版本客户端使用DCS实例兼容性问题?
- 应该选择域名还是IP地址连接Redis实例?
- 主备实例的只读地址是连接到主节点还是备节点?
-
Redis使用
- 是否支持CPU架构的变更?
- 实例是否支持变更可用区
- Redis实例能否修改VPC和子网?
- 实例是否支持自定义或修改端口?
- 实例是否支持修改访问地址?
- 实例无法删除是什么原因?
- 集群实例启动时间过长是什么原因?
- 使用redis_exporter出错怎么办?
- 什么是预留内存,如何配置预留内存?
- 创建的缓存实例为什么可使用内存比实例规格少一些?
- Redis 3.0 Proxy集群不支持redisson分布式锁的原因
- DCS Redis有没有后台管理软件?
- DCS缓存实例的数据被删除后,能否找回?
- 为什么实例实际可用内存比申请规格小而且已使用内存不为0?
- 如何查看Redis内存占用量
- Cluster集群实例容量和性能未达到瓶颈,但某个分片容量或性能已过载是什么原因?
- 访问Redis报OOM错误提示
- 不同编程语言如何使用Cluster集群客户端
- 使用Cluster的Redis集群时建议配置合理的超时时间
- 读取redis数据报超时错误
- hashtag的原理、规则及用法示例
- Redis key丢失是什么原因
- 重启实例后缓存数据会保留吗?
- 如何确认实例是单DB还是多DB
- Proxy集群开启多DB的使用限制及操作方式
- 如何创建多DB的Proxy集群实例?
- 扩容缩容与实例升级
-
数据备份/导出/迁移
- DCS实例是否兼容低版本Redis迁移到高版本
- 不同类型的操作系统间进行数据传递和操作,需要注意什么?
- 源Redis使用了多DB,能否迁移数据到集群实例?
- 源Redis迁移到集群实例中有哪些限制和注意事项?
- 在线迁移需要注意哪些?
- 在线迁移能否做到完全不中断业务?
- 在线迁移实例源端报“Disconnecting timedout slave”和“overcoming of output buffer limits”
- 如何导出Redis实例数据?
- 使用Rump工具迁移数据,命令执行后无报错,但Redis容量无变化
- 是否支持控制台导出RDB格式的Redis备份文件?
- 缓存实例备份文件如何存放?备份文件的数量是否有限制?
- Redis在线数据迁移是迁移整个实例数据么?
- AOF文件在什么情况下会被重写
- Redis迁移失败有哪些常见原因?
- 一个数据迁移能迁移到多个目标实例么?
- 怎么放通SYNC和PSYNC命令?
- 迁移或导入备份数据时,相同的Key会被覆盖吗?
- Cluster集群实例使用内置key且跨slot的Lua脚本时迁移失败
- 迁移故障处理
- 数据迁移失败问题排查
- Memcached如何迁移?
- 是否支持Memcached和Redis之间实例数据的迁移?
- 大Key/热Key分析/过期Key扫描
- Redis命令
- 监控告警
- 主备倒换
- 创建实例和权限
- Memcached使用
- 故障排除
- 视频帮助
- 文档下载
- 通用参考
链接复制成功!
升级Redis 3.0实例到高版本实例
方案概述
Redis开源社区自2019年5月19日发布Redis 3.0最后一个小版本后,一直未对Redis 3.0进行更新。华为云DCS也于2021年3月发布了停售DCS Redis 3.0的公告。
鉴于Redis 3.0版本较老,开源社区已不再对其进行更新,DCS提供的Redis 4.0/5.0/6.0高版本兼容Redis 3.0,建议客户尽快将DCS Redis 3.0升级到高版本。
DCS暂不支持直接升级实例版本,只能通过数据迁移将低版本实例中的数据迁移到高版本,从而实现Redis版本升级。本章节介绍如何通过数据迁移+交换实例IP的方式升级Redis 3.0实例到高版本。
约束与限制
- DCS Redis 3.0实例支持绑定弹性IP公网访问,Redis 4.0/5.0/6.0实例不支持直接绑定弹性IP,公网访问方式需通过ELB实现,开启Redis 4.0/5.0/6.0公网访问的方式请参考开启Redis 4.0/5.0/6.0公网访问并获取公网访问地址,如果用户业务依赖公网访问,升级前请先进行评估。
- 通过数据迁移的方式升级Redis版本,对客户业务可能有以下影响:
- 数据同步完成后,需要交换源Redis与目标Redis实例的IP地址,交换IP地址时会有一分钟内只读和30秒左右的中断。
- 如果升级后实例与原实例密码不一致,数据同步完成后,需要切换访问Redis的密码,切换时需要停止业务。因此,建议升级前后实例密码保持一致。
- 建议在业务低峰期进行实例升级操作。
前提条件
- 创建与Redis 3.0相同VPC和子网,相同实例类型、相同访问密码、且规格不小于原实例规格的高版本Redis实例。例如,用户需要将Redis 3.0 16GB主备实例升级到Redis 5.0版本,则需要提前创建一个不小于16GB的Redis 5.0主备实例。
创建Redis实例的操作,请参考创建DCS Redis缓存实例。
- 手动备份Redis 3.0源实例数据。备份数据的操作,请参考如何导出Redis实例数据?。
迁移实例数据
- 登录分布式缓存服务管理控制台。
- 在管理控制台左上角单击
,选择源Redis所在的区域。
- 单击左侧菜单栏的“数据迁移”。页面显示迁移任务列表页面。
- 单击右上角的“创建在线迁移任务”。
- 设置迁移任务名称和描述。
- 配置在线迁移任务虚拟机资源的VPC、子网和安全组。
- 迁移任务需要与源Redis和目标Redis实例网络互通,请选择与Redis实例相同的VPC。
- 迁移任务创建后,会占用一个租户侧IP,即控制台上迁移任务对应的“迁移机IP”,如果目标Redis配置了IP白名单,需要放通迁移机IP。
- 迁移任务所选安全组的“出方向规则”需放通源端Redis和目标端Redis的IP和端口(安全组默认情况下为全部放通,则无需单独放通),以便迁移任务的虚拟机资源能访问源Redis和目标Redis。
- 在线迁移任务创建完成后,单击在线迁移任务右侧“操作”列的“配置”,配置在线迁移的源Redis、目标Redis等信息。
- 迁移方法请选择“全量迁移+增量迁移”,仅当选择“全量迁移+增量迁移”的迁移方法时,支持通过控制台交换源端与目标端实例的IP地址。如果选择“全量迁移”,需要手动切换业务连接Redis的IP地址。
表1 在线迁移方法说明 迁移类型
描述
全量迁移
该模式为Redis的一次性迁移,适用于可中断业务的迁移场景。全量迁移过程中,如果源Redis有数据更新,这部分更新数据不会被迁移到目标Redis。
全量迁移+增量迁移
该模式为Redis的持续性迁移,适用于对业务中断敏感的迁移场景。增量迁移阶段通过解析日志等技术, 持续保持源Redis和目标端Redis的数据一致。
增量迁移,迁移任务会在迁移开始后,一直保持迁移中状态,不会自动停止。需要您在合适时间,在“操作”列单击“停止”,手动停止迁移。停止后,源端数据不会丢失,只是目标端不再写入数据。增量迁移在传输链路网络稳定情况下是秒级时延,具体的时延情况依赖于网络链路的传输质量。
- 当迁移方法选择“全量迁移+增量迁移”时,支持选择是否启用“带宽限制”。
启用带宽限制功能,当数据同步速度达到带宽限制时,将限制同步速度的继续增长。
- 选择是否“自动重连”。如开启自动重连模式,迁移过程中在遇到网络等异常情况时,会无限自动重连。
自动重连模式在无法进行增量同步时,会触发全量同步,增加带宽占用,请谨慎选择。
- “源Redis实例”和“目标Redis实例”,请分别选择需要升级的Redis 3.0实例和新建的高版本Redis实例。
- 如果源Redis和目标Redis为密码访问模式,请分别在“源Redis实例密码”和“目标Redis实例密码”处输入实例密码后,单击密码右侧的“测试连接”,检查实例密码是否正确、网络是否连通。如果源Redis和目标Redis为免密访问模式,无需输入密码,直接单击“测试连接”。
- 在“源DB”和“目标DB”中,可以选择是否需要指定具体迁移的DB。例如源端输入5,目标端输入6时,表示迁移源Redis DB5中的数据到目标Redis的DB6。当源端不指定DB,目标端指定DB时,表示默认迁移源端的全部数据到目标端指定的DB;当目标端不指定DB时,表示默认迁移到与源端对应的DB。本次操作“源DB”和“目标DB”置空即可。
- 单击“下一步”。
- 确认迁移信息,然后单击“提交”,开始创建迁移任务。
可返回迁移任务列表中,观察对应的迁移任务的状态,迁移成功后,任务状态显示“成功”。
说明:
- 如果是增量迁移,会一直保持迁移中的状态。
- 如需手动停止迁移,请选中需要停止的迁移任务,单击“停止”。
- 数据迁移后,目标端与源端重复的Key会被覆盖。
如果出现迁移失败,可以单击迁移任务名称,进入迁移任务详情页面,查看“迁移日志”。
迁移后验证
数据迁移前如果目标Redis中数据为空,迁移完成后,可以通过以下方式确认数据的完整性:
- 连接源Redis和目标Redis。连接Redis的方法请参考Redis-cli客户端连接Redis。
- 输入info keyspace,查看keys参数和expires参数的值。
- 对比源Redis和目标Redis的keys参数分别减去expires参数的差值。如果差值一致,则表示数据完整,迁移正常。
注意:如果是全量迁移,迁移过程中源Redis更新的数据不会迁移到目标实例。
交换DCS实例IP
当DCS源Redis与目标Redis满足以下条件时,支持交换源Redis与目标Redis的IP地址。交换实例IP后,客户端代码无需修改源端实例的访问地址,即可自动连接到目标Redis。
- 源端和目标端必须是基础版Redis,且不能是Cluster集群实例。企业版实例和Cluster集群实例不支持实例交换IP。
- 源端是Redis 3.0实例,需要先联系后台管理人员开通Redis 3.0实例交换IP的白名单,并且仅当Redis 3.0作为源端实例,目标端为Redis 4.0/5.0/6.0基础版实例时,支持交换实例IP。
- 开启公网访问后的源实例或目标实例,不支持控制台交换IP,只能手动更换业务连接Redis的IP地址。
- 实例选择迁移方法步骤时,必须选择的是“全量迁移+增量迁移”,如果是“全量迁移”的方式,则不支持交换实例IP。
- 源Redis与目标Redis实例的端口需要一致。
- 交换IP过程中,会自动停止在线迁移任务。
- 源端实例为Redis 3.0,交换IP地址时,会有一分钟内只读和30秒左右的中断。
- 请确保您的客户端应用具备重连机制和处理异常的能力,否则在交换IP后有可能需要重启客户端应用。
- 如果源端是主备实例,交换IP时不会交换备节点IP,请确保应用中没有直接引用备节点IP。
- 如果应用中有直接引用域名,请选择交换域名,否则域名会挂在源实例中。
- 请确保目标Redis和源Redis密码一致,否则交换IP后,客户端会出现密码验证错误。
- Redis3.0实例交换IP地址后,需要将源实例的安全组配置同步至目标实例的白名单配置中。
- 在“数据迁移 > 在线迁移”页面,当迁移任务状态显示为“增量迁移中”时,单击操作列的“更多 > 交换IP”打开交换IP弹框。
- 在交换IP弹框中的交换域名区域,选择是否交换域名。
说明:
- 如果客户端使用域名连接Redis,必须选择交换域名,否则客户端应用需要修改使用的域名。
- 如果没有选择交换域名,则只交换实例的IP地址。
- 单击“确定”,交换IP任务提交成功,当迁移任务的状态显示为“IP交换成功”,表示交换IP任务完成。
业务功能验证
- 验证业务功能是否正常。例如,检查客户端访问Redis是否有报错。
- 观察关键性能监控指标是否异常。例如,活跃客户端连接数、每秒并发操作数、CPU使用率、内存使用率等监控参数。