我有一个具有两个数据库的 Redis 实例。现在我想设置第二个实例和 replicate第一个实例,但第二个实例应该只有一个数据库,并且只从第一个实例复制 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 阶段。
怎么办?
最佳答案
我是这样实现的(在 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
- 将配置更改为
数据库 1
- 再次启动Redis
此时你应该有一个正在运行的 Redis 实例只有一个 db(原始 Redis 实例中的 db 0)
这里的关键是,当我们删除第二个数据库中的所有键,然后将数据集保存到磁盘时,生成的转储只有一个数据库。 (感谢 Gurpartap Singh 的提示)
关于redis - 从具有多个数据库的实例复制单个 Redis 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11819387/