将 35GB Redis 从一个实例复制到另一个实例的最快方法(在 Azure 标准中)

use*_*246 4 azure redis azure-redis-cache

我们在 Azure 上有两个 Azure Redis 实例。源位于 Azure 中的“标准”设置。我们需要将所有 35GB 从标准版本复制到高级版本(而不是迁移)。

最好的方法是什么?数据应该是静态的。您无法以标准方式导出数据,也无法进行分片。我们已经达到了最大大小,需要迁移到支持分片的大小。

Ima*_*ica 6

1. 编辑配置文件

在目标Redis的配置文件集中

slaveof sourceIP sourcePort
slave-read-only no
Run Code Online (Sandbox Code Playgroud)

它将通过传输 RDB 文件有效地将源数据库复制到新数据库中。然后您可以注释掉这些行并关闭源实例。请注意,目标实例中的旧密钥不会保留,也不会重写。

2.配置设置命令

对这个悲伤的故事没有帮助。

127.0.0.1:6371> CONFIG SET Slaveof“localhost 6370”
(错误)ERR 不支持的 CONFIG 参数:slaveof

3.迁移命令

MIGRATE remotehost remoteport "" 0 5000 COPY KEYS *
Run Code Online (Sandbox Code Playgroud)

也不会工作。但有一个解决方法:/sf/answers/2988080301/

redis-cli --raw KEYS '*' | redis-cli --raw KEYS '*' | xargs redis-cli 迁移 my.redis 6379 "" 0 5000 个密钥

(如果你用过的话,请给那个人点个赞)

4. Shell脚本编写

这是一个将KEYS输出通过管道传输MIGRATE并添加一些其他功能的脚本:https://gist.github.com/nicStuff/ee7feb8eed00174a46db42812545b403

5.RDB下载

即使您无权访问服务器上的文件,也可以使用 Redis 协议下载 RDB 转储:

redis-cli -h <host> -p <port> --rdb /path/to/local/copy/dump.rdb
Run Code Online (Sandbox Code Playgroud)