Jay*_*Jay 5 redis amazon-elasticache redis-cluster
我正在尝试使用从单实例 Redis 服务器获取的 RDB 文件创建 Redis 集群。这是我尝试过的:
#! /usr/bin/env bash
for i in 6000 6001 6002 6003
do
redis-server --port $i --cluster-config-file "node-$i.cconf" --cluster-enabled yes --dir "$(pwd)" --dbfilename dump.rdb &
done
Run Code Online (Sandbox Code Playgroud)
该脚本启动 4 个启用集群的 Redis 进程。它还使用转储文件初始化每个节点。
然后我运行redis-trib.rb以便 4 个节点可以找到彼此:
redis-trib.rb create 127.0.0.1:6000 127.0.0.1:6001 127.0.0.1:6002 127.0.0.1:6003
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
>>> Creating cluster
[ERR] Node 127.0.0.1:6060 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
Run Code Online (Sandbox Code Playgroud)
我还尝试了一种变体,其中仅使用 RDB 文件初始化第一个节点/进程,而其他节点/进程为空。我可以将 3 个空节点加入到一个集群中,但不能将预先填充数据的节点加入到集群中。
将预先存在的 RDB 文件导入 Redis 集群的正确方法是什么?
如果这是一个“ XY 问题”,这就是我这样做的原因:
我正在致力于从单实例 Redis 服务器迁移到 Elasticache Redis 集群(已启用集群模式)。如果您将 RDB 文件上传到 S3,Elasticache 可以在集群启动时轻松导入该文件。但Elasticache集群启动需要很长时间。为了在测试迁移代码时减少反馈循环,我希望也能够在本地启动集群。
我还尝试过使用create-cluster实用程序,但似乎没有任何选项可以用数据预填充集群。