假设我有[3个节点-1个数据中心-1个群集] cassandra设置。
复制系数= 2的键空间
我正在为所有节点进行定期快照和增量备份。
我的3个节点之一由于任何原因完全崩溃,我想恢复备份。
Cassandra(datastax) documentation建议通常在恢复之前对表进行TRUNCATE。
问题: 由于我只打算在一个节点上还原备份,因此需要TRUNCATE吗?根据我的理解,因为truncate将从所有节点中删除该表的数据。 TRUNCATE Doc
因此,如果我截断表并仅在一个节点上还原备份,那么我也不会丢失该表中存储在其他节点上的数据吗?
答案 0 :(得分:0)
首先,在您的情况下,您可能根本不想还原备份。由于复制因子= 2,因此您的数据仍位于原始三个数据库的另一个节点上。因此,您可以删除完全崩溃的节点,然后再次添加它。 Cassandra将自动对其进行加速,并将数据流式传输到其中。
或者,您可以使用SSTableLoader将备份中的数据文件流式传输到群集中。
不过,为了解起见,还有其他几点:
为什么要截断?
在某些情况下建议截断,因为还原的数据将比新数据具有更早的时间戳。
您发送的链接中的示例很容易解释这些情况之一。 如果您不小心删除了很多数据并希望恢复旧数据,则需要先删除那些将这些行标记为已删除的逻辑删除。