在*gc_grace_seconds过去之前,有没有办法让Cassandra安全地移除墓碑*?

jon*_*rry 7 garbage-collection cassandra tombstone

我知道早期删除墓碑是危险的,因为它可能导致删除的数据被复活,但如果所有副本都已确认删除,则此类删除应该是安全的.例如,如果一个表具有复制因子3并且包含该密钥的所有3个节点都已确认它们具有适当的逻辑删除,那么执行压缩操作应该是安全的,其中删除了逻辑删除,因为没有数据的延迟副本.

在卡珊德拉可以安全地移除墓碑吗?

我宁愿设置gc_grace_seconds无限,依靠这种类型的墓碑安全压缩,而不是担心时间nodetool repairgc_grace_seconds.

Jon*_*dad 2

不,在不更改 gc_grace_seconds 的情况下不可能删除墓碑。

在某些操作中,所有 3 个副本都可能会确认逻辑删除,将其删除,然后稍后需要它。考虑这样的情况:您需要将早期的 SSTable 流式传输回集群中。

这种类型的手动墓碑删除会显着降低性能,因为您只会定期而不是持续执行此操作。您将不必要地读取额外的数据,并不断压缩应删除的墓碑。

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