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

时间:2018-05-25 16:58:38

标签: azure redis azure-redis-cache

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

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

1 个答案:

答案 0 :(得分:1)

1。编辑配置文件

在目标Redis的配置文件集

slaveof sourceIP sourcePort
slave-read-only no

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

2。 CONFIG SET命令

对这个悲伤的故事不会帮助你。

  

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

3。 MIGRATE命令

MIGRATE remotehost remoteport "" 0 5000 COPY KEYS *

也不会工作。但有一种解决方法:https://stackoverflow.com/a/42686861/78569

  

redis-cli --raw KEYS'*'| xargs redis-cli MIGRATE my.redis 6379“”0 5000 KEYS

(如果您使用它,请向那个人投票)

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