我目前有一个live redis服务器运行在一个云实例,我想迁移这个redis服务器到一个新的云实例,并使用该实例作为我的新的redis服务器。如果它是MySQL,我将从旧服务器导出DB并将其导入到新服务器。我该如何用redis做到这一点?
附注:我不指望设置复制。我想完全迁移redis服务器到一个新的实例。
我目前有一个live redis服务器运行在一个云实例,我想迁移这个redis服务器到一个新的云实例,并使用该实例作为我的新的redis服务器。如果它是MySQL,我将从旧服务器导出DB并将其导入到新服务器。我该如何用redis做到这一点?
附注:我不指望设置复制。我想完全迁移redis服务器到一个新的实例。
当前回答
也可以使用SLAVEOF命令迁移数据:
SLAVEOF old_instance_name old_instance_port
检查您是否收到带有keys *的钥匙。你也可以用任何其他方法测试这个新实例,当你完成时,只需打开replication of:
SLAVEOF NO ONE
由于Redis 5.0推荐使用REPLICAOF,因为SLAVEOF已弃用-请参阅手册
其他回答
我还想做同样的事情:将一个db从一个独立的redis实例迁移到另一个redis实例(redis哨兵)。
因为数据不是关键(会话数据),我将尝试https://github.com/yaauie/redis-copy。
将数据库快照保存到转储中。通过在命令行运行BGSAVE或SAVE命令来恢复rdb。这将创建一个名为dump的文件。RDB和你的redis服务器在同一个文件夹。查看所有服务器命令的列表。
复制这个转储。RDB到您想要迁移到的另一个redis服务器。当redis启动时,它会寻找这个文件来初始化数据库。
如果您在服务器之间有连接,最好将新实例作为从节点设置复制(与SQL不同,这很简单),然后您可以用一个命令将新节点切换到主节点,并且无需停机时间。
Redis-dump终于为我工作了。它的文档提供了一个如何转储Redis数据库并将数据插入到另一个数据库的示例。
您也可以使用RDD
它可以转储和恢复一个运行的redis服务器,并允许过滤/匹配/重命名转储键