7

我知道早期删除墓碑是危险的,因为它可能导致已删除的数据复活,但如果所有副本都已确认删除,那么这种删除应该是安全的。例如,如果一个表的复制因子为 3,并且包含该键的所有 3 个节点都已确认它们具有适当的 tombstone,则执行删除 tombstone 的压缩应该是安全的,因为不会有数据的延迟副本.

在 Cassandra 可以安全地移除墓碑吗?

我宁愿设置gc_grace_seconds为无穷大并依赖这种类型的墓碑安全压缩,而不是担心nodetool repair和的时间gc_grace_seconds

4

1 回答 1

2

不,在不更改 gc_grace_seconds 的情况下无法删除墓碑。

在某些操作中,所有 3 个副本都可以确认墓碑,将其删除,然后稍后再需要它。考虑需要将较早的 SSTable 流式传输回集群的情况。

这种类型的手动删除墓碑会显着降低性能,因为您只会定期而不是经常这样做。您将不必要地读取额外的数据,并不断压缩应该删除的墓碑。

我的建议是将您的 gc_grace_seconds 设置为合理的值(10 天即可)并使用 opscenter 或 cassandra-reaper 安排维修。

于 2015-10-19T13:24:30.007 回答