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

Man*_*rer 5 database-replication redis

我有一个包含两个数据库的 Redis 实例。现在我想设置第二个实例并复制第一个实例,但第二个实例应该只有一个数据库并且只从第一个实例复制 db 0。当我尝试这样做(slaveof ...为第二个实例设置)时,我在 Redis 日志文件中收到以下错误消息:

FATAL: Data file was created with a Redis server configured to handle more than 1 databases. Exiting
Run Code Online (Sandbox Code Playgroud)

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

该怎么办?

Man*_*rer 5

这就是我实现这一目标的方法(在 Gurpartap Singh 的帮助下):

  • databases 2像第一个Redis 实例一样配置第二个 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)

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