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

问题描述

多个rdb文件来自不同的Redis服务器。现在,我想将数据文件合并到单个Redis服务器中。到目前为止,我只找到一个可以通过单个dump.rdb文件恢复的答案。

解决方法

最简单的方法是使用DEBUG RELOAD(未记录的命令)。

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(已应用友好格式)。

因此,如果要确保不同的RDB中没有重复的密钥,请使用DEBUG RELOAD NOSAVE NOFLUSH。如果您知道有重复项,请使用DEBUG RELOAD NOSAVE NOFLUSH MERGE,最后加载您要占优的副本。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...