我知道早期删除墓碑是危险的,因为它可能导致删除的数据被复活,但如果所有副本都已确认删除,则此类删除应该是安全的。例如,如果一个表具有复制因子3并且包含该密钥的所有3个节点都已确认它们具有适当的逻辑删除,则应该可以安全地执行删除逻辑删除的压缩,因为不存在数据的延迟副本
Cassandra可以安全地移除墓碑吗?
我宁愿将gc_grace_seconds
设置为无穷大,依靠这种类型的墓碑安全压缩,而不是担心nodetool repair
和gc_grace_seconds
的时间。
答案 0 :(得分:2)
不,如果不更改gc_grace_seconds,就无法移除墓碑。
有些操作可以让所有3个副本都可以删除墓碑,删除它,然后再需要它。考虑需要将早期SSTable流回群集的情况。
这种类型的手动删除墓碑的性能会明显更差,因为您只是定期而不是不断地进行。您将不必要地阅读额外数据,并不断压缩应删除的墓碑。
我的建议是将你的gc_grace_seconds设置为合理的(10天没问题)并使用opscenter或cassandra-reaper安排修复。