我目前有一个live redis服务器运行在一个云实例,我想迁移这个redis服务器到一个新的云实例,并使用该实例作为我的新的redis服务器。如果它是MySQL,我将从旧服务器导出DB并将其导入到新服务器。我该如何用redis做到这一点?

附注:我不指望设置复制。我想完全迁移redis服务器到一个新的实例。


当前回答

Redis-dump终于为我工作了。它的文档提供了一个如何转储Redis数据库并将数据插入到另一个数据库的示例。

其他回答

零停机迁移的关键要素是:

复制(http://redis.io/commands/SLAVEOF) 在应用程序切换过程中写入从机的可能性(CONFIG slave-read-only no)

简而言之:

设置一个目标redis(空)作为源redis的从属(与你的数据) 等待复制完成 允许写入目标redis(当前为slave) 将应用程序切换到目标redis 等待数据流从主端转移到从端 将目标redis从主变为从

此外,redis还有一些选项,允许在分离目标后禁用源redis来接受写:

min-slaves-to-write min-slaves-max-lag

本主题由

http://redis.io/topics/admin#upgrading-or-restarting-a-redis-instance-without-downtime

reddislabs团队非常好的解释https://redislabs.com/blog/real-time-synchronization-tool-for-redis-migration(使用web.archive.org)

甚至还有他们的交互式迁移工具:https://github.com/RedisLabs/redis-migrate

Redis-dump终于为我工作了。它的文档提供了一个如何转储Redis数据库并将数据插入到另一个数据库的示例。

将数据库快照保存到转储中。通过在命令行运行BGSAVE或SAVE命令来恢复rdb。这将创建一个名为dump的文件。RDB和你的redis服务器在同一个文件夹。查看所有服务器命令的列表。

复制这个转储。RDB到您想要迁移到的另一个redis服务器。当redis启动时,它会寻找这个文件来初始化数据库。

如果您在服务器之间有连接,最好将新实例作为从节点设置复制(与SQL不同,这很简单),然后您可以用一个命令将新节点切换到主节点,并且无需停机时间。

您也可以使用RDD

它可以转储和恢复一个运行的redis服务器,并允许过滤/匹配/重命名转储键