ElastiCache-将数据从t1。* / t2。*迁移到m3。*

时间:2018-09-07 10:20:19

标签: amazon-web-services redis amazon-elasticache

我目前有一个Redis集群,实例类型为 cache.t2.micro

对于这种实例类型,没有没有选项可将Redis数据自动备份到s3 ,并且也无法运行 BGSAVE 命令,因为它受{{3} }

我注意到,如果重新启动Redis集群中的主节点,或者Redis引擎版本从较低版本更改为较高版本(即从3.x更改为4.x),则来自节点的数据将被完全删除。他们声称是尽力而为。

不支持为此实例类型制作快照,如here

所述

我唯一想到的选择是使用 DUMP 命令并获取密钥的序列化版本,并为所有DBS归档此数据,然后使用以下命令将其还原到新集群中 RESTORE 命令。 但这可能不是最佳方法,因为它不可扩展,最终需要花费一些时间来处理较大的数据集。

对于启用了 TTL 的键,我还必须运行TTL命令,获取TTL(这是额外的开销)。

但是DUMP命令发出错误 DUMP有效负载版本或校验和错误,从而排除了该选项(难怪此命令不受限制)

在这种情况下,除了读取所有密钥及其值之外,还有其他方法可以进行备份和还原吗?

谢谢。


编辑:

因此,我知道这不是执行此操作的最佳方法,但这是我能想到的。

TL; DR

读取所有键,然后从一个群集迁移到另一个群集。

这对于配置config的集群应该不是问题。大于t2。*

代码:

#include <cstdio>    
struct Group {
    int x;
    int y;
    const char* s;
};

int main() 
{  
  Group group {
    .x = 1, 
    .y = 2, 
    .s = "Hello it works"
  };
  printf("%d, %d, %s", group.x, group.y, group.s);
}

以上工作与密钥类型无关。
性能:以上内容在2秒内迁移了约4000个密钥。

1 个答案:

答案 0 :(得分:0)

根据 AWS 文档:

<块引用>

对于Redis(禁用集群模式) cache.t1.micro 节点不支持集群、备份和恢复。 支持所有其他缓存节点类型。

因此对于 cahce.t2 节点,您可以创建手动/最终快照并在从快照恢复时更改节点类型