让我们首先列出一些事实:
与此问题类似:How do I set an elasticache redis cluster as a slave?
关于这可能如何运作的一个想法:
我的问题:
*对于此类工具的任何作者都没有违法行为,我确信它们非常棒,我只是对使用同一团队编写的工具更有信心,以避免潜在的兼容性错误。
答案 0 :(得分:3)
我只有一台要迁移的Redis服务器,大约有3GB的数据
我会停止,将REDIS保存到S3,然后将其上传到新的群集。
我猜10分钟保存文件并将其输入s3 从该数据中启动弹性缓存集群需要10分钟。 给你十分钟的时间进行配置和测试。
但是有一种简单的方法可以确切知道多长时间。 做一次测试迁移。
详细说明,每步操作一次,将命令复制到记事本窗口。
放置Word / Excel文档,以便拥有迁移文档。这样你知道它需要多长时间,并没有惊喜。让我们知道它是怎么回事。
答案 1 :(得分:1)
ElastiCache具有联机迁移支持。您可以使用start-migration API开始从自我管理群集到ElastiCache群集的迁移。
aws elasticache start-migration --replication-group-id <ElastiCache Replication Group Id> --customer-node-endpoint-list "Address='<IP Address>',Port=<Port>"
API的输入是您的ElastiCache复制组ID以及自我管理群集的主服务器的IP和端口。您需要确保可以从ElastiCache节点访问该IP地址。 (示例IP地址将是您自己管理的群集的主服务器的专用IP地址)。此API将使ElastiCache集群的主节点在您自己管理的集群的主节点上调用“ SLAVEOF”。这将建立复制流,并将开始将数据从自我管理群集迁移到ElastiCache群集。在迁移期间,ElastiCache群集的主服务器将停止接受直接发送给它的写入。您可以从应用程序开始使用ElastiCache集群进行读取。
一旦所有数据都存储在ElastiCache集群中,就可以使用complete-migration API停止迁移。该API将停止从自我管理群集到ElastiCache群集的复制。
aws elasticache complete-migration --replication-group-id <ElastiCache Replication Group Id>
此后,ElastiCache群集的主服务器将开始接受写入。您可以从应用程序开始使用ElastiCache集群进行读取和写入。
此迁移方法要注意的以下limitations:
答案 2 :(得分:0)
有几种方法可以在不停机的情况下迁移数据。但它们很难实现。
您可以让您的应用同时写入两个redis实例 - 其中一个将在EC上。一旦缓存都“热”,您就可以重新启动应用程序,并从EC缓存中读取。
您最初可以迁移到EC2而不是EC。我想,并不是你真正希望听到的。这很容易做到,因为您可以将EC2设置为redis实例的salve。此外,从EC2迁移到EC更容易一些(数据已经在AWS上),因此对于拥有大量数据的用户来说有一个好处。
理论上,您可以拦截来自客户端的命令并将其发送给EC,从而有效地“复制”。但是这需要一些编程(我不相信像这样的工具存在ATM)并且对于多个短暂的客户端会很难。