在aws elasticache上将多个独立的redis示例迁移并合并到一个新的redis集群中

kjthegm6  于 2021-06-08  发布在  Redis
关注(0)|答案(2)|浏览(723)

现在,我们的数据在三个独立的redis示例之间进行了拆分,没有集群或切分。我们正从目前的云服务提供商转向aws,并希望将所有这些数据存储在一个新的elasticache redis集群中,这样我们就可以水平扩展。
不幸的是,当目标示例处于集群模式并且我无法手动使用 SLAVEOF elasticache中的命令。看起来dump.rdb文件只能在您第一次启动redis服务器或第一次创建新的ec集群时导入。
任何关于如何实现这个迁移和合并过程的指南都将不胜感激。有没有办法将多个dump.rdb文件合并到一个文件中?或者以某种方式将每个服务器的数据一个接一个地传输到配置端点/主节点?

hc8w905p

hc8w905p1#

你看过防暴项目吗
https://github.com/redis-developer/riot
你可以做一次活的迁徙我不得不承认,我曾经将数据从elasticache迁移到redis云,但您可以在任何方向使用它。

kyks70gy

kyks70gy2#

这不是一个优雅的解决方案,但我做的是这样的。我不得不上传并整合所有redis数据到一个示例中。
启动一个具有足够内存的新redis示例来保存我们所有三个redis示例的数据,然后安装redis rdb工具,允许您将dump.rdb文件解析并转换为不同的格式:
https://github.com/sripathikrishnan/redis-rdb-tools
对于每个dump.rdb文件,我运行了以下命令,该命令生成包含redis协议的文件,这些文件稍后可以通过管道传输到新的redis服务器:

rdb -c protocol dump1.rdb > dump1.protocol

将每个生成的文件通过管道传输到新的redis示例:

cat dump1.protocol | redis-cli --pipe

在那之后,运行了一个 BGSAVE (后台保存命令)使用redis cli生成单个dump.rdb文件。
然后,您可以将dump.rdb文件上载到s3,并在elasticache中设置新的redis集群时选择它来为所有数据播种。

相关问题