我目前有一个live redis服务器运行在一个云实例,我想迁移这个redis服务器到一个新的云实例,并使用该实例作为我的新的redis服务器。如果它是MySQL,我将从旧服务器导出DB并将其导入到新服务器。我该如何用redis做到这一点?
附注:我不指望设置复制。我想完全迁移redis服务器到一个新的实例。
我目前有一个live redis服务器运行在一个云实例,我想迁移这个redis服务器到一个新的云实例,并使用该实例作为我的新的redis服务器。如果它是MySQL,我将从旧服务器导出DB并将其导入到新服务器。我该如何用redis做到这一点?
附注:我不指望设置复制。我想完全迁移redis服务器到一个新的实例。
当前回答
首先,在服务器a上创建一个转储。
A$ redis-cli
127.0.0.1:6379> CONFIG GET dir
1) "dir"
2) "/var/lib/redis/"
127.0.0.1:6379> SAVE
OK
这确保了转储。RDB是最新的,并显示了它的存储位置(/var/lib/redis/dump)。在本例中是RDB)。转储。RDB还会定期自动写入磁盘。
接下来,将其复制到服务器B:
A$ scp /var/lib/redis/dump.rdb myuser@B:/tmp/dump.rdb
在B上停止Redis服务器,复制转储。RDB(确保权限与以前相同),然后启动。
B$ sudo service redis-server stop
B$ sudo cp /tmp/dump.rdb /var/lib/redis/dump.rdb
B$ sudo chown redis: /var/lib/redis/dump.rdb
B$ sudo service redis-server start
B上的Redis版本必须大于或等于A上的版本,否则可能会遇到兼容性问题。
其他回答
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
我对自己的案子很在行,已经测试过了。
去查查垃圾场在哪。导入redis数据时必须放置RDB,
开始客户端
$ redis-cli
and
then
redis 127.0.0.1:6379> CONFIG GET *
1) "dir"
2) "/Users/Admin"
这里/Users/Admin是转储的位置。从服务器读取的RDB,因此这是必须被替换的文件。
也可以使用SLAVEOF命令迁移数据:
SLAVEOF old_instance_name old_instance_port
检查您是否收到带有keys *的钥匙。你也可以用任何其他方法测试这个新实例,当你完成时,只需打开replication of:
SLAVEOF NO ONE
由于Redis 5.0推荐使用REPLICAOF,因为SLAVEOF已弃用-请参阅手册
Redis-dump终于为我工作了。它的文档提供了一个如何转储Redis数据库并将数据插入到另一个数据库的示例。
首先,在服务器a上创建一个转储。
A$ redis-cli
127.0.0.1:6379> CONFIG GET dir
1) "dir"
2) "/var/lib/redis/"
127.0.0.1:6379> SAVE
OK
这确保了转储。RDB是最新的,并显示了它的存储位置(/var/lib/redis/dump)。在本例中是RDB)。转储。RDB还会定期自动写入磁盘。
接下来,将其复制到服务器B:
A$ scp /var/lib/redis/dump.rdb myuser@B:/tmp/dump.rdb
在B上停止Redis服务器,复制转储。RDB(确保权限与以前相同),然后启动。
B$ sudo service redis-server stop
B$ sudo cp /tmp/dump.rdb /var/lib/redis/dump.rdb
B$ sudo chown redis: /var/lib/redis/dump.rdb
B$ sudo service redis-server start
B上的Redis版本必须大于或等于A上的版本,否则可能会遇到兼容性问题。