繁体   English   中英

Cassandra:如果只对一个节点执行TRUNCATE表并还原备份,我会丢失数据吗?

[英]Cassandra: If TRUNCATE table and restore backup for only one node, will I loose data?

假设我有[3个节点-1个数据中心-1个群集] cassandra设置。

复制系数= 2的快捷键

我正在为所有节点制作定期快照和增量备份。

我的3个节点之一由于任何原因完全崩溃,我想恢复备份。

Cassandra(datastax)文档建议通常在还原之前对表进行TRUNCATE。

问题:由于我只打算在一个节点上还原备份,因此需要TRUNCATE吗? 根据我的理解,因为truncate将从所有节点中删除该表的数据。 截断文档

因此,如果我截断表并仅在一个节点上还原备份,那么我是否也不会丢失该表中存储在其他节点上的数据?

首先, 在您的方案中 ,您可能根本不想还原备份。 由于复制因子= 2,因此您的数据仍位于原始三个数据库的另一个节点上。 因此,您可以删除完全崩溃的节点,然后再次添加它。 Cassandra将自动对其进行加速并将数据流式传输到它。

另外,您还可以使用SSTableLoader将数据文件从备份流式传输到群集中。

为了知识起见,还有其他几点:

  • 截断将删除所有节点上表中的数据。
  • 如果截断该表,然后仅在一个节点上进行还原,则丢失的数据将具有复制因子= 2和三个节点。
  • 在您的情况下,不需要截断

为什么要截断?

在某些情况下建议使用截断,因为还原的数据将比新数据具有更旧的时间戳。

您发送的链接中的示例很容易解释这些情况之一。 如果您不小心删除了很多数据并希望恢复旧数据,则需要先删除将这些行标记为已删除的逻辑删除。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM