常见问题
使用 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
解决办法
-
执行
cluster nodes
命令,检查集群的节点个数。例如:10.111.152.130:6379> cluster nodes eaff83637962927de9e4897895c0e419e2f22cda :6379@16379 myself,master - 0 0 0 connected
说明:上述示例中,集群内仅有 1 个节点。
-
当节点个数小于 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
备份与恢复
如何查询我的实例有哪些备份?
-
执行以下命令,获取实例的备份。
#哨兵模式 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}
-
执行以下命令,通过定时备份名称筛选备份。
#哨兵模式 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} 为实例中配置的定时备份名称,请替换为实际值。
恢复失败,如何排查?
-
在容器平台中,进入 计算组件 > 任务记录 页面。
-
单击备份任务的 任务记录名称,进入任务记录详情页面。
-
单击 日志 页签,查看该任务记录的日志信息。
-
如果任务记录的日志中没有报错信息,需前往查看
initcontainer
实例的日志是否有报错信息。
支持备份非 Operator 创建的实例吗?
不支持。
支持 S3 备份吗?
目前不支持。
支持使用用户自己创建的 redis.rdb 文件来恢复吗?
目前不支持。