[英]Replicate a single Redis database from an instance that has multiple databases
我有一个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中的一个bug,它仍处于alpha状态。
该怎么办?
这就是我实现它的方式(在Gurpartap Singh的帮助下):
databases 2
配置第二个Redis实例,就像第一个一样 databases 1
此时,您应该有一个只有一个db的正在运行的Redis实例(来自原始Redis实例的db 0)
这里的关键是当我们删除第二个数据库中的所有密钥然后将数据集保存到磁盘时,生成的转储只有一个数据库。 (感谢Gurpartap Singh的提示)
根据我的理解,你有redis实例A,它有db 0和db 1.你想在另一个实例B上复制db 0(可能在另一台机器上 - 但无关紧要)。 Redis主要关注完整的实例复制,而不是单独的数据库。
因此,如果您仍想复制db 0而不是db 1,我建议您将db中的任何一个迁移到单独的实例。 比如,将db 1迁移到单独的实例,与此复制图无关。 然后,您可以为仅具有db 0(实例A)的实例设置主从复制。
以下是有关如何实现redis复制的详细说明: http : //redis.io/topics/replication
简而言之,您必须连接到要创建slave的新实例(B),然后发出命令: slaveof redis-master.webapp.com 6379
,其中地址和端口指向实例A.它将会然后同步数据并遵循主实例的所有更新。
如果您发现它没有同步数据,您可以使用info
命令检查它的同步状态。 也可以在master上试一试。 日志也有帮助。
希望有所帮助。 如果您需要有关设置redis复制的更多信息,请告诉我。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.