【问题标题】:How to recover deleted data in cassandra?如何在 cassandra 中恢复已删除的数据?
【发布时间】:2019-11-26 23:24:23
【问题描述】:

如果我deleted表格单元格中的一个值,但后来我想恢复它,我该怎么做?

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

用例举例:我想删除一个用户的所有信息,所以我先删除了cassandra数据库中的信息,然后,我尝试在其他地方删除他的信息,但是出错了,所以我不得不停止删除过程并从 cassandra 数据库中恢复已删除的数据。

我该怎么做?

【问题讨论】:

  • 为什么不先对要删除的数据进行“备份”呢?就像首先将数据复制到另一个表然后执行删除一样。从其他位置删除信息后,您可以安全地将其从备份表中删除。另外,this 可能会有所帮助。
  • @Horia,谢谢,是的,但我知道这种方法,但我只想知道,如果 cassandra 提供一些功能来删除“已删除”标记... :)
  • 很遗憾没有。但是,您可以使用 sstabledump (Cassandra >= 3.0) 来检查 sstable 内容,但有一些缺点...
  • @Horia,非常感谢!如果你有时间在下面写下答案,我可以选择它作为正确答案。 :)

标签: cassandra


【解决方案1】:

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

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

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

一些解决方法

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

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

【讨论】:

    猜你喜欢
    • 2015-10-13
    • 2014-06-20
    • 2018-10-03
    • 2018-10-12
    • 2023-04-09
    • 2014-03-04
    • 2020-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多