首页 / 平台管理 / 应用商店管理 / Operators / 使用 Operator / Redis / 常见问题

常见问题

使用 Redis 过程中遇到的常见问题及对应的解决办法。

集群模式

遇到 “(error) CLUSTERDOWN Hash slot not served” 报错信息,如何处理?

问题描述

(error) CLUSTERDOWN Hash slot not served 报错信息,通常为集群状态异常所致。进入 redis-cli 后查看 Redis 集群的状态,集群状态 为:cluster_state:fail。示例如下:

10.111.152.130:6379> cluster info
cluster_state:fail
cluster_slots_assigned:0
cluster_slots_ok:0
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:1
cluster_size:0
cluster_current_epoch:0
cluster_my_epoch:0
cluster_stats_messages_sent:0
cluster_stats_messages_received:0

解决办法

  1. 执行 cluster nodes 命令,检查集群的节点个数。例如:

    10.111.152.130:6379> cluster nodes
    eaff83637962927de9e4897895c0e419e2f22cda :6379@16379 myself,master - 0 0 0 connected

    说明:上述示例中,集群内仅有 1 个节点。

  2. 当节点个数小于 3 时,修改 Redis 实例 YAML 文件中 size 字段的取值大于或等于 3。

    size: 3

遇到 “(error) MOVED” 报错信息,如何处理?

问题描述

报错信息如下:

# redis-cli -h 10.109.248.41 -a "password"
10.109.248.41:6379> set a 1
(error) MOVED 15495 10.199.2.30:6379

解决办法

为 redis-cli 添加 flag -c,例如:

# redis-cli -h 10.109.248.41 -a "password" -c
10.109.248.41:6379> set a 1
OK
10.109.248.41:6379> get a
"1"

哨兵模式

使用Ceph存储类时,Pod报错怎么办?

在实例的 YAML 文件中增加 securityContext 描述,以指定容器使用 root 用户。

例如:

kind: RedisFailover
metadata:
name: redis-sentinel-demo
spec:
redis:
securityContext:
  runAsUser: 0
  runAsGroup: 0
  fsGroup: 0        

备份与恢复

如何查询我的实例有哪些备份?

  1. 执行以下命令,获取实例的备份。

    #哨兵模式
    kubectl -n {namespace} get redisbackup -l redisfailovers.databases.spotahome.com/name={redis_instance_name}
    
    #集群模式
    kubectl -n {namespace} get redisclusterbackup -l redis.kun/name={redis_instance_name}
  2. 执行以下命令,通过定时备份名称筛选备份。

    #哨兵模式
    kubectl -n {namespace} get redisbackup -l redisfailovers.databases.spotahome.com/name={redis_instance_name},redisfailovers.databases.spotahome.com/scheduleName={schedule_name}
    
    #集群模式
    kubectl -n {namespace} get redisclusterbackup -l redis.kun/name={redis_instance_name},redis.kun/scheduleName={schedule_name}

    说明:{namespace} 为命名空间名称;{redis_instance_name} 为实例名称;{schedule_name} 为实例中配置的定时备份名称,请替换为实际值。

恢复失败,如何排查?

  1. 在容器平台中,进入 计算组件 > 任务记录 页面。

  2. 单击备份任务的 任务记录名称,进入任务记录详情页面。

  3. 单击 日志 页签,查看该任务记录的日志信息。

  4. 如果任务记录的日志中没有报错信息,需前往查看 initcontainer 实例的日志是否有报错信息。

支持备份非 Operator 创建的实例吗?

不支持。

支持 S3 备份吗?

目前不支持。

支持使用用户自己创建的 redis.rdb 文件来恢复吗?

目前不支持。