我目前有一个live redis服务器运行在一个云实例,我想迁移这个redis服务器到一个新的云实例,并使用该实例作为我的新的redis服务器。如果它是MySQL,我将从旧服务器导出DB并将其导入到新服务器。我该如何用redis做到这一点?
附注:我不指望设置复制。我想完全迁移redis服务器到一个新的实例。
我目前有一个live redis服务器运行在一个云实例,我想迁移这个redis服务器到一个新的云实例,并使用该实例作为我的新的redis服务器。如果它是MySQL,我将从旧服务器导出DB并将其导入到新服务器。我该如何用redis做到这一点?
附注:我不指望设置复制。我想完全迁移redis服务器到一个新的实例。
当前回答
我发现导出/备份Redis数据(创建转储文件)的简单方法是通过命令行启动一个服务器,并创建一个动态副本,如下所示(假设源Redis在端口6379上是1.2.3.4):
/usr/bin/redis-server --port 6399 --dbfilename backup_of_master.rdb --slaveof 1.2.3.4 6379
其他回答
我发现导出/备份Redis数据(创建转储文件)的简单方法是通过命令行启动一个服务器,并创建一个动态副本,如下所示(假设源Redis在端口6379上是1.2.3.4):
/usr/bin/redis-server --port 6399 --dbfilename backup_of_master.rdb --slaveof 1.2.3.4 6379
将数据库快照保存到转储中。通过在命令行运行BGSAVE或SAVE命令来恢复rdb。这将创建一个名为dump的文件。RDB和你的redis服务器在同一个文件夹。查看所有服务器命令的列表。
复制这个转储。RDB到您想要迁移到的另一个redis服务器。当redis启动时,它会寻找这个文件来初始化数据库。
如果您在服务器之间有连接,最好将新实例作为从节点设置复制(与SQL不同,这很简单),然后您可以用一个命令将新节点切换到主节点,并且无需停机时间。
去查查垃圾场在哪。导入redis数据时必须放置RDB,
开始客户端
$ redis-cli
and
then
redis 127.0.0.1:6379> CONFIG GET *
1) "dir"
2) "/Users/Admin"
这里/Users/Admin是转储的位置。从服务器读取的RDB,因此这是必须被替换的文件。
source_host=xxx
source_port=6379
source_db=10
source_auth=xxx
target_host=yyyyy
target_port=6379
target_db=12
target_auth=yyyyy
redis-cli -a $source_auth -h $source_host -p $source_port -n $source_db keys \* | while read key; do
echo "redis-cli -h $source_host -p $source_port -a $source_auth -n $source_db MIGRATE $target_host $target_port "" $target_db 5000 COPY AUTH $target_auth KEYS $key"
redis-cli -h $source_host -p $source_port -a $source_auth -n $source_db MIGRATE $target_host $target_port "" $target_db 5000 COPY AUTH $target_auth KEYS $key
done
我对自己的案子很在行,已经测试过了。