【问题标题】:Cassandra - recovery of data after accidental deleteCassandra - 意外删除后的数据恢复
【发布时间】:2018-10-03 16:32:48
【问题描述】:

由于 Cassandra 的数据在压缩过程中被物理删除,是否可以以任何方式访问最近删除的数据?我正在寻找类似于 Oracle 闪回功能 (AS OF TIMESTAMP) 的东西。

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

【问题讨论】:

  • 理论上(还不确定),你可以做nodetool flush,然后停止写入数据,然后使用sstabledump将数据转储为JSON格式并从中恢复,忽略墓碑。跨度>
  • 很遗憾,删除时数据还在memtable中(墓碑覆盖了数据)。

标签: cassandra cassandra-3.0 recovery data-recovery


【解决方案1】:

您将希望从您的提交日志执行恢复。 最安全的方法是将提交日志复制到新集群(具有相同架构),然后按照commitlog_archiving.properties 文件中的说明(cmets)进行恢复。在您的情况下,您需要将 restore_point_in_time 设置为插入和删除之间的时间。

【讨论】:

  • 从实际的角度来看,只需为这个答案添加几点:实际上在 Cassandra 启动期间利用提交日志重播行为就足够了。我关闭了开发节点,删除了提交日志文件并上传了包含已删除数据的文件。但是,有必要更改 system_schema.tables 中目标表的 ID(或重新创建它们,包括 CREATE TABLE 语句中的 ID)以匹配原始表。否则将跳过突变(CommitLogReplayer.java:147 - 从未知(可能已删除)CF 中跳过 9 个突变,ID ...)。
猜你喜欢
  • 1970-01-01
  • 2014-02-28
  • 2021-03-13
  • 1970-01-01
  • 2011-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-19
相关资源
最近更新 更多