【问题标题】:How to Recover Redis from Multiple RDB Files如何从多个 RDB 文件中恢复 Redis
【发布时间】:2020-12-23 13:42:16
【问题描述】:

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

【问题讨论】:

  • 我要尝试的第一件事是:使用 rdb 启动服务器,使用配置集禁用 rdb aof preample,使用配置集启用 aof,然后等待 aof 被写入(某些 redis 版本需要 bgrewriteaof 才能触发它)。对所有 rdb 执行此操作,中间重命名 aof。之后,只需将所有 aof 文件组合在一起,并使用启用 aof 的 redis conf 加载它。

标签: redis recovery


【解决方案1】:

最简单的方法是使用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,最后加载您想要占上风的那个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-29
    • 1970-01-01
    • 1970-01-01
    • 2015-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多