我目前有一个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个密钥。
答案 0 :(得分:0)
根据 AWS 文档:
<块引用>对于Redis(禁用集群模式) cache.t1.micro 节点不支持集群、备份和恢复。 支持所有其他缓存节点类型。
因此对于 cahce.t2 节点,您可以创建手动/最终快照并在从快照恢复时更改节点类型