在开发人员或测试集群(1 节点集群)上恢复 Cassandra 快照(从 3 节点集群)

Hen*_*rik 3 database-backups cassandra

我们通过快照为 Cassandra 生产环境设置了备份/恢复程序。快照文件、架构和令牌环信息复制到 S3。

生产集群是一个 3 节点集群,复制因子为 3。

为了开发和测试,我想将生产中的快照恢复到单独的集群中。为了节省资金并方便维护,最好只从一个生产节点恢复快照。由于我们在 3 节点集群中使用复制因子 3,因此每个快照都应包含所有行。一致性对于我们的用例来说也不重要。

是否可以(以及如何)仅恢复单个快照?

Chr*_*ink 5

所有数据都应存在于所有 3 个节点上,因此将 sstables 从任意 1 个节点复制到测试集群就足够了。如果担心一致性,那么提前确保最近进行过修复可能是个好主意。

首先在测试集群上创建相同的架构。然后您可以简单地使用 拍摄快照nodetool snapshot -t cloneme。完成后,将所有 sstables 从创建的文件夹 (cloneme) 复制到测试集群上的等效表文件夹中。然后跑nodetool refresh

如果您有不同的拓扑(更多节点,不同的射频),它会变得更加复杂,但由于您采用“每个节点都有所有数据”,所以它非常简单。

值得一提的是,OpsCenter 具有自动将备份复制到其他集群的功能。