You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Redis Cloud克隆至本地环境时键未完全导入的问题咨询

解决方案:Redis Cloud备份导入本地后Timeseries/JSON类型数据缺失问题

问题根源

rdbtools作为第三方RDB解析工具,对Redis模块(如Timeseries、ReJSON)的私有数据结构支持不足,解析时会直接跳过这类非基础类型的键,导致仅能导入字符串、哈希、列表等基础键类型。

正确恢复步骤(基于Redis原生工具)

1. 验证备份文件有效性

先确认下载的gzip文件是合法的RDB格式:

  • 解压单个备份文件:gunzip -c backup-file-01.gz > test.rdb
  • 检查RDB文件合法性并查看模块信息:
    redis-check-rdb --verbose test.rdb
    
    输出中应包含timeseries和ReJSON的模块标识,确认备份包含目标数据类型。

2. 确保本地Redis加载所需模块

登录本地Redis客户端,执行MODULE LIST,确认输出包含timeseries和ReJSON模块:

127.0.0.1:6379> MODULE LIST

如果未加载,修改Redis配置文件/etc/redis/redis.conf,添加模块加载指令(路径根据实际安装位置调整):

loadmodule /usr/lib/redis/modules/redis-timeseries.so
loadmodule /usr/lib/redis/modules/rejson.so

重启Redis服务:sudo systemctl restart redis-server

3. 单RDB文件恢复(适用于单分片备份)

  • 停止本地Redis服务:sudo systemctl stop redis-server
  • 备份原有RDB文件:sudo cp /var/lib/redis/dump.rdb /var/lib/redis/dump.rdb.bak
  • 将解压后的RDB文件替换到Redis数据目录:sudo cp test.rdb /var/lib/redis/dump.rdb
  • 设置正确权限:sudo chown redis:redis /var/lib/redis/dump.rdb
  • 启动Redis服务:sudo systemctl start redis-server
  • 验证数据:执行TS.INFO <你的时间序列键>或JSON.GET <你的JSON键>确认数据存在。

4. 多分片备份批量恢复(16个文件场景)

由于备份拆分为多个分片,需逐个导入:

  • 为每个分片启动临时Redis实例(避免干扰主实例):
    # 创建临时目录
    mkdir -p /tmp/redis-shard
    # 解压当前分片到临时目录
    gunzip -c backup-file-01.gz > /tmp/redis-shard/shard.rdb
    # 启动临时实例(端口6380,独立数据目录)
    redis-server --port 6380 --dir /tmp/redis-shard --dbfilename shard.rdb --daemonize yes
    
  • 将临时实例的所有键复制到本地主实例:
    redis-cli --port 6380 KEYS "*" | xargs -I {} redis-cli --port 6379 COPY {} {}
    
  • 关闭临时实例:redis-cli --port 6380 SHUTDOWN
  • 重复上述步骤处理剩余15个分片。

内容的提问来源于stack exchange,提问作者Miguel Alexander Lozano Villa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 19:12:42