DCS实例规格变更的业务影响
执行实例规格变更操作,建议在业务低峰期进行。
业务高峰期(如实例在内存利用率、CPU利用率达到90%以上或写入流量过大)变更规格可能会失败,若变更失败,请在业务低峰期再次尝试变更。
在实例规格变更时,可能会存在的影响如下:
实例类型变更须知
实例版本 |
支持的实例变更类型 |
变更须知及影响 |
---|---|---|
Redis 3.0 |
单机实例变更为主备实例 |
连接会有秒级中断,大约1分钟左右的只读。 |
主备实例变更为Proxy集群实例 |
|
|
Memcached |
单机实例变更为主备实例 |
会有秒级业务中断、大约1分钟只读。 |
Redis 4.0/5.0/6.0 |
主备实例或读写分离实例变更为Proxy集群实例 |
|
Proxy集群实例变更为主备实例或读写分离实例 |
||
Redis 4.0/5.0/6.0 |
主备实例变更为读写分离实例
说明:
读写分离实例暂不支持直接变更为主备实例。 |
|
除了上表中提到的实例外,其他实例类型目前不支持实例类型的变更,若您想实现跨实例类型的规格变更,可参考使用迁移任务在线迁移Redis实例进行操作。
实例类型变更后支持的命令,请参考对应的开源命令兼容性。
实例规格变更须知
- 支持实例规格变更明细如下:
表2 实例规格变更明细 缓存类型
单机实例
主备实例
Cluster集群实例
Proxy集群实例
读写分离实例
Redis 3.0
支持扩容和缩容
支持扩容和缩容
-
仅支持扩容
-
Redis 4.0
支持扩容和缩容
支持扩容、缩容和副本数变更
支持扩容、缩容和副本数变更
支持扩容和缩容
支持扩容、缩容和副本数变更
Redis 5.0
支持扩容和缩容
支持扩容、缩容和副本数变更
支持扩容、缩容和副本数变更
支持扩容和缩容
支持扩容、缩容和副本数变更
Redis 6.0 基础版
支持扩容和缩容
支持扩容、缩容和副本数变更
支持扩容、缩容和副本数变更
支持扩容和缩容
支持扩容、缩容和副本数变更
Redis 6.0 企业版
-
支持扩容和缩容
-
-
-
Memcached
支持扩容和缩容
支持扩容和缩容
-
-
-
- Redis 3.0和Memcached实例在预留内存不足的情况下,内存用满可能会导致扩容失败,具体可参考预留内存。
- 副本数变更和容量变更不支持同时进行,需分开两次执行变更。
- 删除副本时,每次操作仅支持删除一个副本。
- 实例规格变更的影响:
表3 实例规格变更的影响 实例类型
规格变更类型
实例规格变更的影响
单机、主备和读写分离实例
扩容/缩容
- Redis 4.0及以上版本基础版实例,扩容期间连接会有秒级中断,大约1分钟的只读,缩容期间连接不会中断。
- Redis 3.0实例,规格变更期间连接会有秒级中断,5~30分钟只读。
- Redis企业版实例,规格变更期间连接会有秒级中断,大约1分钟的只读。
- 如果是扩容,只扩大实例的内存,不会提升CPU处理能力。
- 单机实例不支持持久化,变更规格不能保证数据可靠性。在实例变更后,需要确认数据完整性以及是否需要再次填充数据。如果有重要数据,建议先把数据用迁移工具迁移到其他实例备份。
- 主备和读写分离实例缩容前的备份记录,缩容后不能使用。如有需要请提前下载备份文件,或缩容后重新备份。
Proxy和Cluster集群实例
扩容/缩容
- 水平扩容(分片数增加):
- 连接不中断,但会占用CPU,导致性能有20%以内的下降。
- 分片数增加时,会新增数据节点,数据自动负载均衡到新的数据节点,访问时延会增大。
- 水平缩容(分片数减少):
- 分片数减少时,会删除节点。Cluster集群实例缩容前,请确保应用中没有直接引用这些删除的节点,否则可能导致业务访问异常。
- 删除节点会导致连接闪断,请确保您的客户端应用具备重连机制和处理异常的能力,否则在变更规格后可能需要重启客户端应用。
- 垂直扩容(分片数不变,分片容量增加):
- 如果节点所在的虚拟机内存容量不足,会发生节点迁移,迁移时业务连接会有闪断和只读。
- 如果虚拟机内存容量充足,则直接扩大节点容量,对业务无影响。
说明:Redis 3.0版本集群实例不支持垂直扩缩容。
- 垂直缩容(分片数不变,分片容量减少):无影响。
- 实例缩容前,每个节点的已用内存要小于缩容后节点最大内存的70%,否则将不允许变更。
- 实例规格变更期间,可能会进行数据迁移,访问时延会增大。Cluster集群请确保客户端能正常处理MOVED和ASK命令,否则会导致请求失败。
- 实例规格变更期间,如果有大批量数据写入导致节点内存写满,将会导致变更失败。
- 在实例规格变更前,请先使用缓存分析中的大key分析,确保实例中没有大key存在,否则在规格改变后,节点间进行数据迁移的过程中,单个key过大(≥512MB)会触发Redis内核对于单key的迁移限制,造成数据迁移超时失败,进而导致规格变更失败,key越大失败的概率越高。
- Cluster集群实例扩容或缩容时,请确保客户端开启集群拓扑自动刷新配置,否则在变更后需要重启客户端。Lettuce客户端开启集群拓扑自动刷新配置请参考Lettuce客户端连接Cluster集群实例中的示例。
- 实例规格变更前的备份记录,变更后不能使用。如有需要请提前下载备份文件,或变更后重新备份。
主备、读写分离和Cluster集群实例
副本数变更
- Cluster集群实例增加或删除副本时,请确保客户端开启集群拓扑自动刷新配置,否则在变更后需要重启客户端。Lettuce客户端开启集群拓扑自动刷新配置请参考Lettuce客户端连接Cluster集群实例中的示例。
- 删除副本会导致连接中断,需确保您的客户端应用具备重连机制和处理异常的能力,否则在删除副本后需要重启客户端应用。增加副本不会连接中断。
- 当副本数已经为实例支持的最小副本数时,不支持删除副本。