如何恢复Cassandra中已删除的数据?

时间:2018-10-31 09:33:55

标签: cassandra

如果我deleted在表的单元格中有一个值,但是以后,我想恢复它,该怎么办?

我知道,cassandra并没有真正删除数据,只是将其标记为已删除,所以我该如何恢复数据?

例如,用例:我想从用户中删除所有信息,因此我首先删除cassandra数据库中的信息,然后,我尝试在其他地方删除他的信息,但是出现了错误,因此我必须停止删除过程并从cassandra数据库中恢复已删除的数据。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

不幸的是没有。但是,您可以使用sstabledump(Cassandra> = 3.0)检查sstable的内容,但是有一些缺点:

  • 如果数据未刷新到磁盘(因此位于内存表中),则会在到达sstable之前被删除
  • 您需要找到数据所属的sstable

我现在可能还想念一些其他缺点。

一些解决方法

  • 首先将数据复制到另一个表,然后执行删除。从其他位置删除信息后,可以从备份表中安全删除它。
  • 您将在其中记录状态的新列(“ pending_delete”)。您只会查询“实时”数据。
  • 一个新表,您将在其中存储要删除的数据的pk,并在另一个位置上的操作成功后将其从两个表中删除。

我想选择正确的解决方案取决于您的用例和数据大小。