让我们从列出一些事实开始:
类似于这个问题:如何将elasticacheredis集群设置为从集群?
关于这可能如何运作的一个想法:
我的问题:
*无意冒犯此类工具的任何作者,我相信它们很棒,我只是觉得使用与产品相同的团队编写的工具更有信心,以避免潜在的兼容性错误。
我只有一个Redis服务器要迁移,大约有3gb的数据
我会停止,将REDIS保存到S3,然后将其上传到新集群。
我猜10分钟保存文件并将其放入s3。
10分钟从该数据启动一个elasticache集群。给你十分钟额外的时间来配置和测试。
但是有一个简单的方法可以确切地知道多长时间。对它进行测试迁移。
记下详细笔记,计时每一步,将命令复制到记事本窗口。
放置Word/excel文档,以便您拥有迁移文档。这样您就知道需要多长时间,并且没有任何惊喜。让我们知道它是如何进行的。
ElastiCache支持在线迁移。您可以使用开始迁移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和自管理集群master的IP和端口。您需要确保IP地址可以从ElastiCache节点访问。(IP地址的一个示例是自管理集群master的私有IP地址)。这API将使ElastiCache集群的master节点在自管理集群的master上调用'SLAVEOF'。这将建立一个复制流,并将开始将数据从自管理集群迁移到ElastiCache集群。在迁移过程中,ElastiCache集群的master将停止接受直接发送给它的写入。您可以从应用程序开始使用ElastiCache集群进行读取。
在ElastiCache集群中拥有所有数据后,您可以使用完全迁移API停止迁移。API将停止从自管理集群到ElastiCache集群的复制。
aws elasticache complete-migration --replication-group-id <ElastiCache Replication Group Id>
在此之后,ElastiCache集群的主机将开始接受写入。您可以从应用程序开始使用ElastiCache集群进行读写。
此迁移方法需要注意以下限制:
有几种方法可以在不停机的情况下迁移数据。不过,它们更难实现。
>
你可以让你的应用程序同时写入两个redis实例,其中一个在EC。一旦缓存都“热”了,你可以重新启动你的应用程序,然后从EC缓存中读取。
你最初可以迁移到EC2而不是EC。我想这不是你希望听到的。这很容易做到,因为你可以将EC2设置为redis实例的药膏。此外,从EC2迁移到EC稍微容易一些(数据已经在AWS上),所以对拥有大量数据集的用户有好处。
理论上,您可以拦截来自客户端的命令并将它们发送到EC,从而有效地“复制”。但是这需要一些编程(我不相信ATM存在这样的工具),并且对于多个短暂的客户端来说会很困难。