是否可以恢复cassandra中已删除的列数据?

时间:2019-02-08 08:48:18

标签: cassandra cassandra-2.0

如果我们使用以下删除查询删除了Cassandra中的一些(20个查询)数据。 从cycling.cyclist_name中删除姓氏,其中id = c7fceba0-c141-4207-9494-a29f9809de6f;

那么我们如何才能在Cassandra中恢复/查找以上已删除的数据?请帮助

2 个答案:

答案 0 :(得分:2)

如果尚未进行压缩,则可以通过sstabledump从SSTables中恢复数据,并从生成的JSON文件中获取它们。

但是正确的答案是使用某种备份解决方案-通过OpsCenter,或通过nodetool snapshot使用手动备份,等等。有关更多信息,请参见DataStax支持团队的following article

答案 1 :(得分:2)

Cassandra不会立即删除数据。正如Alex所暗示的那样,它将一直存在于sstables(数据文件)中,直到进行压缩为止,并且仅标记有删除标记(已墓碑化)。

您可以将sstables的内容转储到文本文件中,然后搜索您的ID。

对每个sstable执行以下操作:

sstabledump mc-3-big-Data.db > dump2019a

这些文本文件将包含带有“ deletion_info”标志的数据。然后,您可以搜索自己的ID并检索数据。

不过,在压实之前,您应该迅速采取行动。