【问题标题】:Is there any way to have Cassandra safely remove tombstones *before* gc_grace_seconds have elapsed?有什么方法可以让 Cassandra 在 *gc_grace_seconds 过去之前*删除墓碑?
【发布时间】:2014-12-24 07:56:02
【问题描述】:

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

在 Cassandra 中是否可以安全地移除墓碑?

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

【问题讨论】:

    标签: cassandra garbage-collection tombstone


    【解决方案1】:

    不,不更改 gc_grace_seconds 就无法删除墓碑。

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

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

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

    【讨论】:

      猜你喜欢
      • 2017-10-03
      • 2015-06-04
      • 2019-10-26
      • 2023-03-08
      • 1970-01-01
      • 2019-02-16
      • 2017-12-26
      • 2019-07-09
      • 2016-05-31
      相关资源
      最近更新 更多