从具有多个数据库的实例中复制单个Redis数据库

发布于 2021-02-01 12:06:10

我有一个Redis实例,其中有两个数据库。现在,我想设置第二个实例并复制第一个实例,但是第二个实例应该仅具有一个数据库,并且仅复制第一个实例中的db
0。当我尝试执行此操作(slaveof ...为第二个实例设置)时,我在Redis日志文件中收到以下错误消息:

FATAL: Data file was created with a Redis server configured to handle more than 1 databases. Exiting

我尝试使用redis-dump,但是尝试将生成的转储导入新实例时出现错误。(我认为与2 dbs和1 db无关,而是redis-dump中的一个错误,该错误仍在alpha中。

该怎么办?

关注者
0
被浏览
128
1 个回答
  • 面试哥
    面试哥 2021-02-01
    为面试而生,有面试问题,就找面试哥。

    这是我的实现方式(在Gurpartap Singh的帮助下):

    • databases 2第一个实例一样配置第二个Redis实例
    • 复制第一个实例(请参阅http://redis.io/topics/replication
    • 打开第二个Redis实例的命令行(使用redis-cli)
    • 在Redis CLI上:SELECT 1(选择第二个数据库)
    • 在Redis CLI上:FLUSHDB(删除第二个数据库中的所有键)
    • 在Redis CLI上:SAVE(将数据集保存到磁盘)
    • 退出Redis CLI并停止Redis
    • 将配置更改为 databases 1
    • 重新启动Redis

    此时,您应该有一个只有一个数据库的运行Redis实例(原始Redis实例的db 0)

    这里的关键是,当我们删除第二个数据库中的所有密钥,然后将数据集保存到磁盘时,生成的转储只有一个数据库。(感谢古尔帕塔普·辛格的暗示)



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看