小编典典

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

redis

我有一个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中。

该怎么办?


阅读 614

收藏
2020-06-20

共1个答案

小编典典

这是我的实现方式(在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)

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

2020-06-20