如何从多个 RDB 文件中恢复 Redis?

多个rdb文件来自不同的redis服务器。现在我想将数据文件合并到单个 redis 服务器。到目前为止,我只找到了使用单个 dump.rdb 文件进行恢复的答案。



redis
recovery
服务器
2023-04-26 14:20:13
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
巧克力好吃点

从 Redis 6.0 开始

DEBUG RELOAD
redis-cli

命令有一个新的

NOSAVE

选项,它将从 RDB 文件中获取数据(不会用内存转储覆盖它,也不需要停止

redis-server

)。


DEBUG RELOAD [MERGE] [NOFLUSH] [NOSAVE]


将 RDB 保存在磁盘上并重新加载到内存中。默认情况下它会 保存 RDB 文件并将其加载回来。

使用

NOFLUSH选项加载新数据库之前不会删除当前数据库,但是 密钥冲突将导致服务器异常终止。


MERGE是 使用,冲突的键将被加载(加载的 RDB 文件中的键 会赢)。


使用

NOSAVE时,服务器不会保存当前 加载前 RDB 文件中的数据集.


使用

DEBUG RELOAD NOSAVE时 你只想加载你放在 Redis 工作中的 RDB 文件 目录以替换内存中的当前数据集。


当你想添加内容时使用

DEBUG RELOAD NOSAVE NOFLUSH

MERGE当前RDB文件放在Redis当前目录下,与 当前内存内容。


验证Redis时使用

DEBUG RELOAD能够将当前数据集持久化到 RDB 文件中,刷新 内存内容,并将其加载回去。”,


以上内容摘自

debug.c

,应用友好格式(Redis 7.0见​debug.c源​)。

因此,如果要确保不同 RDB 中没有重复键,请使用

DEBUG RELOAD NOSAVE NOFLUSH

。使用

DEBUG RELOAD NOSAVE NOFLUSH     MERGE

如果你知道你有重复,加载最后一个你想要占上风。

注意:Redis 6.0 之前的版本(没有 NOSAVE 选项,请参阅 ​​debug.c source​​ for Redis 5.0)

DEBUG RELOAD

总是以使用内存转储覆盖文件开始,这是静默失败的一个例子,因为

redis-cli

将接受

DEBUG RELOAD

之后的任何不存在的选项,不仅是“可能的”选项,例如

NOSAVE

,而且还完全是人为的,例如

NOSAVING FAILS IN REDIS50

)。

分享
微博
QQ
微信
回复
2023-04-26 15:58:15
相关问题
关系型数据库rdb如何进行加密
79浏览 • 1回复 待解决
PolarDB 的行如何读?
670浏览 • 1回复 待解决
怎么DataAbilityHelper排除.flac的文件?
3155浏览 • 1回复 待解决
宕机的 Slave 节点如何恢复
1502浏览 • 1回复 待解决
宕机的 Master 节点如何恢复?
1324浏览 • 1回复 待解决
xargs命令多个参数实例?
6865浏览 • 1回复 待解决
GitLab如何使用需要密码的redis?
268浏览 • 1回复 待解决
如何检查key是否存在于Redis?
1100浏览 • 1回复 待解决
HAP的拆包如何区分是HAR和HSP
99浏览 • 1回复 待解决
如何找出Redis的大Key与热Key?
970浏览 • 1回复 待解决
如何在js文件引入自定义js文件
5555浏览 • 1回复 待解决
PolarDB全量恢复实例ID如何保留?
1181浏览 • 1回复 待解决
多个UIAbility是多个进程吗
103浏览 • 1回复 待解决
多个UIAbility是多个进程吗?
86浏览 • 1回复 待解决
redisHash操作是什么?
1067浏览 • 1回复 待解决
多个pageAbility之间如何共享变量
84浏览 • 1回复 待解决
如何申请多个长时任务
129浏览 • 1回复 待解决