
# 变更DCS实例规格
DCS管理控制台支持变更Redis和Memcached缓存实例规格，即变更实例的类型、内存规格、分片数或副本数，您可以根据实际需要，选择合适的实例规格。
实例变更规格，不会影响实例的连接地址、访问密码及安全组/白名单配置等信息，也不需要重启实例。
除单机实例外，其他实例类型变更规格，不会影响实例数据。
#### 约束与限制
- **执行实例变更规格，建议在业务低峰期操作。**业务高峰期（如实例在内存利用率、最大CPU使用率达到90%以上或写入流量过大）变更规格可能会失败，若变更失败，请在业务低峰期再次尝试变更。
- 如果实例创建时间非常早，控制台不支持实例规格变更（即实例扩缩容）功能，请单击[提交工单](https://console.huaweicloud.com/ticket/#/ticketindex/createIndex)，联系客服将缓存实例升级到最新版本，升级后就可以支持规格变更功能。
- Redis 3.0版本集群实例不支持垂直扩缩容。
- Redis 3.0和Memcached实例在预留内存不足的情况下，内存用满可能会导致扩容失败，具体可参考[预留内存](https://support.huaweicloud.com/dcs_faq/dcs-faq-210728001.html)。
- 副本数变更和容量变更不支持同时进行，需分开两次执行变更。
- 删除副本时，每次操作仅支持删除一个副本。
 
#### 费用说明
变更DCS实例类型或规格会产生费用变化，提交变更操作前请确认变更后的费用**。**
#### 操作视频
本视频演示如何变更DCS实例规格。因产品功能演进，操作界面可能存在差异，相关视频仅供参考，具体以实际环境为准。
<video controls="controls" preload="none" id="object138381682519" class="idp-external-video" src="https://res-video.hc-cdn.com/cloudbu-site/china/zh-cn/support/dcs-video/1665317081045209966.mp4" title="变更DCS实例规格" poster="https://support.huaweicloud.com/usermanual-dcs/zh-cn_image_0000002376157429.jpg" height="335.0000" width="600.0000"></video>
#### 实例变更须知
变更实例类型时，请参见**实例类型变更须知** ，变更实例规格时，请参见**变更实例规格须知**。
- [实例类型变更须知]
  表1DCS实例类型变更明细 
  | 实例版本              | 支持的实例变更类型                                                                                               | 变更须知及影响                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
  |:---|:---|:---|
  | Redis 3.0         | 单机实例变更为主备实例                                                                                             | 连接会有秒级中断，大约1分钟左右的只读。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
  | Redis 3.0         | 主备实例变更为Proxy集群实例                                                                                        | 1. 如果Redis 3.0主备实例数据存储在多DB上，或数据存储在非DB0上，不支持变更为Proxy集群；数据必须是只存储在DB0上的主备实例才支持变更为Proxy集群。  2. 连接会中断，5\~30分钟只读。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
  | Memcached         | 单机实例变更为主备实例                                                                                             | 会有秒级业务中断、大约1分钟只读。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
  | Redis 4.0/5.0/6.0 | 主备实例或读写分离实例变更为Proxy集群实例                                                                                 | 1. **实例** **变更为** **Proxy集群** **后，Proxy集群** **默认开启多DB。** 因此需要评估Proxy集群多DB的使用限制和命令使用限制对业务的影响，请参见[proxy集群使用多DB限制](https://support.huaweicloud.com/dcs_faq/dcs-faq-210804001.html)，和[实例受限](https://support.huaweicloud.com/productdesc-dcs/dcs-pd-200813003.html)。  2. 变更前实例的已用内存必须小于变更后最大内存的70%，否则将不允许变更。查询实例已用内存，请参见[查看和修改DCS实例基本信息](https://support.huaweicloud.com/usermanual-dcs/dcs-ug-0312016.html)，查看实例的"已用/可用内存 (MB)"参数。  3. 如果变更前实例的已用内存超过总内存的90%，变更的过程中可能会导致部分key逐出。  4. 变更完成后需要对实例重新[创建告警规则](https://support.huaweicloud.com/usermanual-dcs/dcs-ug-190905001.html)。  5. 如果原实例是主备实例，请确保应用中没有直接引用只读IP或只读域名。  6. 请确保您的客户端应用具备重连机制和处理异常的能力，否则在变更规格后有可能需要重启客户端应用。  7. 变更规格过程中会有秒级业务中断、大约1分钟只读，建议在业务低峰时进行变更。   |
  | Redis 4.0/5.0/6.0 | Proxy集群实例变更为主备实例或读写分离实例                                                                                 | 1. **实例** **变更为** **Proxy集群** **后，Proxy集群** **默认开启多DB。** 因此需要评估Proxy集群多DB的使用限制和命令使用限制对业务的影响，请参见[proxy集群使用多DB限制](https://support.huaweicloud.com/dcs_faq/dcs-faq-210804001.html)，和[实例受限](https://support.huaweicloud.com/productdesc-dcs/dcs-pd-200813003.html)。  2. 变更前实例的已用内存必须小于变更后最大内存的70%，否则将不允许变更。查询实例已用内存，请参见[查看和修改DCS实例基本信息](https://support.huaweicloud.com/usermanual-dcs/dcs-ug-0312016.html)，查看实例的"已用/可用内存 (MB)"参数。  3. 如果变更前实例的已用内存超过总内存的90%，变更的过程中可能会导致部分key逐出。  4. 变更完成后需要对实例重新[创建告警规则](https://support.huaweicloud.com/usermanual-dcs/dcs-ug-190905001.html)。  5. 如果原实例是主备实例，请确保应用中没有直接引用只读IP或只读域名。  6. 请确保您的客户端应用具备重连机制和处理异常的能力，否则在变更规格后有可能需要重启客户端应用。  7. 变更规格过程中会有秒级业务中断、大约1分钟只读，建议在业务低峰时进行变更。   |
  | Redis 4.0/5.0/6.0 | 主备实例变更为读写分离实例 说明： 读写分离实例暂不支持直接变更为主备实例。 | 1. 目前只支持主备实例变更为相同容量的读写分离实例，小于4G规格的主备实例不支持变更为读写分离实例。  2. 如果变更前实例的已用内存超过总内存的90%，变更的过程中可能会导致部分key逐出。  3. 变更完成后需要对实例重新[创建告警规则](https://support.huaweicloud.com/usermanual-dcs/dcs-ug-190905001.html)。  4. 请确保主备实例的应用中没有直接引用只读IP或只读域名。  5. 请确保您的客户端应用具备重连机制和处理异常的能力，否则在变更规格后有可能需要重启客户端应用。  6. 变更规格过程中会有秒级业务中断，建议在业务低峰时进行变更。  7. 主备实例如果创建了ACL账号，不支持变更为读写分离实例。  8. Redis 6.0如果开启了SSL链路加密传输，不支持变更为读写分离实例。                                                                                                                                                                                                                                  |
     
  除了上表中提到的实例外，其他实例类型目前不支持实例类型的变更。若您想实现跨实例类型的规格变更，建议您创建新的实例后进行数据迁移并交换实例IP，迁移操作请参考[使用迁移任务在线迁移Redis实例](https://support.huaweicloud.com/usermanual-dcs/dcs-migration-0312003.html)进行操作。
  实例类型变更后支持的命令，请参考对应的[开源命令兼容性](https://support.huaweicloud.com/productdesc-dcs/dcs-pd-200312003.html)。
- [实例规格变更须知]
  - **支持实例规格变更明细**
    表2实例规格变更明细 
    | 缓存类型          | 单机实例    | 主备实例          | Cluster集群实例   | Proxy集群实例 | 读写分离实例        |
    |:---|:---|:---|:---|:---|:---|
    | Redis 3.0     | 支持扩容和缩容 | 支持扩容和缩容       | -             | 仅支持扩容     | -             |
    | Redis 4.0     | 支持扩容和缩容 | 支持扩容、缩容和副本数变更 | 支持扩容、缩容和副本数变更 | 支持扩容和缩容   | 支持扩容、缩容和副本数变更 |
    | Redis 5.0     | 支持扩容和缩容 | 支持扩容、缩容和副本数变更 | 支持扩容、缩容和副本数变更 | 支持扩容和缩容   | 支持扩容、缩容和副本数变更 |
    | Redis 6.0 基础版 | 支持扩容和缩容 | 支持扩容、缩容和副本数变更 | 支持扩容、缩容和副本数变更 | 支持扩容缩容    | 支持扩容、缩容和副本数变更 |
    | Redis 6.0 企业版 | -       | 支持扩容和缩容       | -             | -         | -             |
    | Redis 7.0     | 支持扩容和缩容 | 支持扩容、缩容和副本数变更 | 支持扩容、缩容和副本数变更 | -         | -             |
    | Memcached     | 支持扩容和缩容 | 支持扩容和缩容       | -             | -         | -             |
       
    
  
  - **实例规格变更的影响：**
    表3实例规格变更的影响 
    | 实例类型                | 规格变更类型 | 实例规格变更的影响                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
    |:---|:---|:---|
    | 单机、主备和读写分离实例        | 扩容/缩容  | - 扩容期间连接会有秒级中断，大约1分钟的只读；单机、主备、读写分离实例，缩容期间连接不会中断。  - Redis 3.0实例，规格变更期间连接会有秒级中断，5\~30分钟只读。  - Redis企业版实例，规格变更期间连接会有秒级中断，大约1分钟的只读。  - 如果是扩容，只扩大实例的内存，不会提升CPU处理能力。  - 单机实例不支持持久化，变更规格不能保证数据可靠性。在实例变更后，需要确认数据完整性以及是否需要再次填充数据。如果有重要数据，建议先把数据用迁移工具迁移到其他实例备份。  - 主备和读写分离实例缩容前的备份记录，缩容后不能使用。如有需要请提前下载备份文件，或缩容后重新备份。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
    | Proxy和Cluster集群实例   | 扩容/缩容  | - 水平扩容（分片数增加）： - **服务端不会主动中断连接，但会占用CPU，导致性能有20%以内的下降。**  - 分片数增加时，会新增数据节点，数据自动负载均衡到新的数据节点，访问时延会增大。    - 水平缩容（分片数减少）： - 分片数减少时，会删除节点。**Cluster集群实例缩容前，请确保应用中没有直接引用这些删除的节点，否则可能导致业务访问异常。**  - **删除节点会导致连接闪断** ，请确保您的客户端应用具备重连机制和处理异常的能力，否则在变更规格后可能需要重启客户端应用**。**    - 垂直扩容（分片数不变，分片容量增加）： - **如果节点所在的虚拟机内存容量不足，会发生节点迁移，迁移时业务连接会有闪断和只读。**  - 如果虚拟机内存容量充足，则直接扩大节点容量，对业务无影响。   说明： Redis 3.0版本集群实例不支持垂直扩缩容。   - 垂直缩容（分片数不变，分片容量减少）：无影响。  - 实例缩容前，每个节点的已用内存要小于缩容后节点最大内存的70%，否则将不允许变更。  - **实例规格变更期间，可能会进行数据迁移，访问时延会增大。请确保客户端能正常处理MOVED和ASK命令，否则会导致请求失败。**  - 实例规格变更期间，如果有大批量数据写入导致节点内存写满，将会导致变更失败。  - 在实例规格变更前，请先使用缓存分析中的大key分析，**确保实例中没有大key存在**，否则在规格改变后，节点间进行数据迁移的过程中，单个key过大（≥512MB）会触发Redis内核对于单key的迁移限制，造成数据迁移超时失败，进而导致规格变更失败，key越大失败的概率越高。  - **Cluster集群实例扩容或缩容时，请确保客户端开启集群拓扑自动刷新配置** ，否则在变更后需要重启客户端。Lettuce客户端开启集群拓扑自动刷新配置请参考[Lettuce客户端连接Cluster集群实例](https://support.huaweicloud.com/usermanual-dcs/dcs-ug-211105002.html)中的示例。  - 实例规格变更前的备份记录，变更后不能使用。如有需要请提前下载备份文件，或变更后重新备份。   |
    | 主备、读写分离和Cluster集群实例 | 副本数变更  | - Cluster集群实例增加或删除副本时，请确保客户端开启集群拓扑自动刷新配置，否则在变更后需要重启客户端。Lettuce客户端开启集群拓扑自动刷新配置请参考[Lettuce客户端连接Cluster集群实例](https://support.huaweicloud.com/usermanual-dcs/dcs-ug-211105002.html)中的示例。  - 删除副本会导致连接中断，需确保您的客户端应用具备重连机制和处理异常的能力，否则在删除副本后需要重启客户端应用。增加副本不会连接中断。  - 当副本数已经为实例支持的最小副本数时，不支持删除副本。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
       
    
   
#### 变更实例
1. 登录[分布式缓存服务管理控制台](https://console.huaweicloud.com/dcs)。
2. 在管理控制台左上角单击![](https://support.huaweicloud.com/usermanual-dcs/zh-cn_image_0000001549115173.png)，选择实例所在的区域。
3. 单击左侧菜单栏的"缓存管理"。
4. 在需要规格变更的实例右侧，单击"操作"列下的"更多 \> 变更规格"，进入到变更实例规格页面。
5. 在变更实例规格页面中，选择您需要变更的目标规格。
6. 选择变更时间为"立即变更"或"可维护时间窗内进行变更"。 
   "可维护时间窗内进行变更"适用于如下**变更规格时存在客户端连接中断的场景**。
   表4变更规格时存在客户端连接中断的场景 
   | 变更规格任务              | 客户端连接中断的场景              |
   |:---|:---|
   | 单机或主备实例扩容           | 从8G以下扩容到8G或8G以上时        |
   | Proxy或Cluster集群实例缩容 | 分片数减少时                  |
   | 变更实例类型              | 主备/读写分离与Proxy集群之间实例类型变更 |
   | 删除副本                | 主备/Cluster集群/读写分离实例删除副本 |
      
   - 不涉及客户端连接中断的场景，选择在可维护时间窗内变更，也会立即变更。
   
   - 提交变更规格后，不支持取消变更，可以修改"维护时间窗"时间推迟变更（变更过程中，维护时间窗可修改次数不超过3次）。
   
   - 提交可维护时间窗内变更规格后，在实例"等待变更中"阶段，如需在可维护变更时间窗前取消变更，需要[提交工单](https://console.huaweicloud.com/ticket/#/ticketindex/createIndex)联系客服开通取消变更的特性，开通后可在"后台任务"中单击对应变更任务后的"取消"，取消该变更操作。
   
   - Redis 3.0和Memcached变更实例时，仅支持"立即变更"。
   
   - 在"维护时间窗"内变更的实例，变更的起始时间点是在维护时间窗时段内的随机时间，不是维护时间窗的起始时间。
   
   - 集群实例缩容需要迁移的数据量过大时，缩容完成的时间可能会超出可维护时间窗。
   
   
   
   
7. 单击"下一步"，确认变更详情，并查看风险检查结果。 
   - 当实例风险检查提示异常时，实例有变更失败的风险，请参考[表5]进行处理。
   
   - 检查结果正常，说明所检查项不存在变更失败的风险。
   
   - 当提示检查失败时，可能是以下两方面原因：
     - 连接实例主节点获取信息失败，建议检查实例状态是否正常。
     
     - 系统异常，建议稍后"重新检查"。
      
   
   - 检查过程中单击"停止检查"，检查会终止，如需重新检查，请单击"重新检查"。
   
   - 手动停止检查或检查结果提示异常时，如需继续执行规格变更，需要勾选"我已知晓风险"。
      表5风险检查项说明 
     | 风险检查项                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | 风险检查原因                                                                                                                                                         | 检查结果异常的处理建议                                                                                                                                                                                                                                                 |
     |:---|:---|:---|
     | 非标配置检查 说明： 目前仅北京四、上海一、上海二等部分区域支持非标配置检查，具体区域以控制台实际检查结果为准。 支持检查的非标场景： - 实例单节点带宽非标  - 实例单节点内存非标  - Cluster集群副本数非标  - Proxy集群Proxy节点数量非标  - Proxy集群最大连接数maxclients非标（超出最大可配连接数）   | 当检查实例存在非标配置项时，会提示您当前实例存在非标配置，变更规格会转换为标准的DCS实例配置。 其中，只有当非标检查结果为非标准带宽或非标准Proxy节点数时，您可以选择实例变更后保留原非标带宽或Proxy节点数，其他非标配置不支持保留。      | - 如果实例不存在非标配置，检查正常，无需处理。  - 如果实例存在非标配置，请根据提示选择是否继续变更，或是否需要保留非标带宽/非标Proxy集群Proxy节点数。   |
     | 节点状态                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | 实例节点状态异常会导致实例变更失败。                                                                                                                                             | 如果提示节点状态异常，请[提交工单](https://console.huaweicloud.com/ticket/#/ticketindex/createIndex)联系客服。                                                                                                                                                                   |
     | 数据集内存分布检查 （该检查项只针对Proxy集群和Cluster集群实例。）                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | Redis集群实例变更规格过程中会进行节点间的数据迁移，如果存在大Key（大于512MB），会触发Redis内核对于单Key的迁移限制，造成数据迁移超时失败。 当节点间实例数据集内存分布不均，且差值大于512MB，表示实例有大Key，有变更失败的风险。 | 当提示节点可能存在大Key时，建议先[处理大Key](https://support.huaweicloud.com/bestpractice-dcs/dcs-bp-0220411.html#section3)后，再进行实例变更。                                                                                                                                         |
     | 内存利用率检查                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | 当节点内存利用率过高（\>90%）时，在变更规格过程中可能导致Key逐出或变更失败。                                                                                                                     | 提示内存利用过高时，建议通过优化大Key、过期Key扫描、或删除部分Key等方式优化内存。                                                                                                                                                                                                               |
     | 网络输入流量检查 （该检查项只针对单机、主备、读写分离实例。）                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | 网络输入流量过高，写缓冲区溢出，可能导致规格变更失败。                                                                                                                                    | 如提示网络输入流量过高，请在业务低峰期进行变更。                                                                                                                                                                                                                                    |
     | CPU利用率检查                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | 检查五分钟内的节点CPU利用率是否过高（\>90%）。节点CPU利用率过高时，可能导致规格变更失败。                                                                                                             | 如提示CPU利用率是否过高，建议在业务低峰期进行变更。[Redis实例CPU利用率高问题排查和解决](https://support.huaweicloud.com/trouble-dcs/dcs-trouble-0715002.html)                                                                                                                                    |
     | 资源容量 （该检查项只针对集群实例扩容分片容量的场景。）                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | 集群实例扩容分片容量时，如果实例所在虚拟机资源容量不足，变更过程中需要节点迁移，迁移节点时，业务连接会有闪断和只读。                                                                                                     | 如果资源容量检查存在风险，请确保您的客户端应用具备重连机制和处理异常的能力，否则在变更规格后可能需要重启客户端应用。                                                                                                                                                                                                  |
        
     
   
   
   
   
8. 风险检查正常后，单击"提交订单"，开始变更DCS缓存实例。提交变更后，在界面上可以选择跳转到[后台任务](https://support.huaweicloud.com/usermanual-dcs/dcs-ug-0312028.html)界面，查看变更任务的状态。
   
   DCS单机、主备和读写分离缓存实例规格变更大约需要5到30分钟，集群实例规格变更所需时间稍长。
   单击后台任务页面中的任务名称，可以查看任务详情。实例规格变更成功后，实例状态切换为"运行中"。
   图1查看后台任务详情   
   ![](https://support.huaweicloud.com/usermanual-dcs/zh-cn_image_0000001796660965.png "点击放大")
   - 当**单机实例**规格变更失败时，实例暂不可用，实例规格仍然为变更前的规格，部分管理操作（如参数配置、规格变更等）暂不支持，待后台完成变更处理后，实例将自动恢复正常，实例规格将更新为变更后的规格。
   
   - 当**主备和集群** **实例**规格变更失败时，实例规格仍然为变更前的规格，部分管理操作（如参数配置、备份恢复、规格变更等）暂不支持，请按照变更前的规格使用，避免因数据超过规格而被丢失。
   
   
   
   
 
#### 相关文档
- DCS支持通过API变更实例规格，相关文档请参见[变更实例规格](https://support.huaweicloud.com/api-dcs/ResizeInstance.html)。
- [集群实例是否支持单分片扩容（垂直扩容）](https://support.huaweicloud.com/dcs_faq/dcs-faq-23222.html)
- [Redis集群实例如何内存不变，只扩分片数？](https://support.huaweicloud.com/dcs_faq/dcs-faq-0220506.html)
- [使用Lettuce连接Cluster集群实例时，规格变更的异常处理](https://support.huaweicloud.com/dcs_faq/dcs-faq-0220613.html)
- [DCS实例规格变更是否需要关闭或重启实例？](https://support.huaweicloud.com/dcs_faq/dcs-faq-0427062.html)
 
