Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cassandra-意外删除后的数据恢复_Cassandra_Cassandra 3.0_Recovery_Data Recovery - Fatal编程技术网

Cassandra-意外删除后的数据恢复

Cassandra-意外删除后的数据恢复,cassandra,cassandra-3.0,recovery,data-recovery,Cassandra,Cassandra 3.0,Recovery,Data Recovery,由于Cassandra的数据在压缩过程中被物理删除,是否可以以任何方式访问最近删除的数据?我正在寻找类似于Oracle Flashback功能的东西(截至时间戳) 此外,我可以在相关的提交日志文件中看到已删除的数据片段,但它显然不可读。是否可以将此文件转换为更可读的格式?您需要从commitlog执行还原。 最安全的方法是将commitlog复制到一个新集群(使用相同的架构),并按照commitlog\u archiving.properties文件中的说明(注释)进行恢复。在您的情况下,您需要

由于Cassandra的数据在压缩过程中被物理删除,是否可以以任何方式访问最近删除的数据?我正在寻找类似于Oracle Flashback功能的东西(
截至时间戳


此外,我可以在相关的提交日志文件中看到已删除的数据片段,但它显然不可读。是否可以将此文件转换为更可读的格式?

您需要从commitlog执行还原。
最安全的方法是将commitlog复制到一个新集群(使用相同的架构),并按照
commitlog\u archiving.properties
文件中的说明(注释)进行恢复。在您的情况下,您需要将
restore\u point\u In\u time
设置为插入和删除之间的时间。

理论上(仍然不确定),您可以执行
nodetool flush
,然后停止写入数据,然后使用
sstabledump
将数据转储为JSON格式并从中恢复,忽略墓碑。不幸的是,删除数据时数据仍在memtable中(墓碑覆盖了数据)。从实际角度来看,只需补充几点:在Cassandra启动期间,它实际上足以利用commitlog replay行为。我关闭了开发节点,删除了commitlog文件,并上传了包含删除数据的文件。但是,有必要更改system_schema.tables中目标表的ID(或重新创建它们,包括CREATE TABLE语句中的ID),以匹配原始表。否则,将跳过突变(CommitLogReplayer.java:147-跳过9个来自未知(可能已删除)CF(id为…)的突变)。