我们对cassandra和始终对同一分区执行日志批插入和选择,并且不设置任何空列,因此不需要使用逻辑删除恢复。数据有一个ttl,因此它总是在每个节点上过期。因此,我们将gc_grace_seconds设置为0,但从记录的批处理中会收到很多警告。我们只想压制这一警告,而不压制所有警告。有什么办法吗?
另一方面,我发现批处理重播也使用gc_grace_seconds,如果它比max_hint_window_ms短,那么这对插入的数据也正确吗?我们有没有办法在恢复后结束一个节点没有新行的情况?在下面的链接中,它表示只有gc_grace_seconds为0的风险才能丢失删除的数据,但我们不会删除数据,所以您认为还有风险吗?https://docs.datastax.com/en/dse/5.1/cql/cql/cql_reference/cql_commands/cqlCreateTable.html#cqlTableProperties__Gc_grace_seconds
谢谢你的帮助,
1条答案
按热度按时间ngynwnxp1#
因此,我们将gc_grace_seconds设置为0
将gc_grace_seconds设置为零是一个非常糟糕的主意。除非您运行的是一个单节点集群,否则您最终会看到旧数据“僵尸”,这是从TTL返回的方式。
我发现批处理重放也使用gcgracesseconds,如果它比maxhintwindowms短,那么这对插入的数据也是正确的吗?
对
我们有没有办法在恢复后结束一个节点没有新行的情况?
对您还可以看到TTL的数据返回。
在下面的链接中,它表示只有gc_grace_seconds为0的风险才能丢失删除的数据,但我们不会删除数据,所以您认为还有风险吗?
TTL数据仍然使用逻辑删除机制。这些墓碑也需要复制。当它们未被复制时(节点关闭情况),您将看到旧数据恢复。
您是否可能向我指出一份关于提示如何使用gc_grace_seconds的cassandra或datastax官方文档,或者为什么一个节点需要tomstone来用ttl终止其自己的数据?
官方文件包含以下内容:
Apache Cassandra文档-压缩:https://cassandra.apache.org/doc/4.1/cassandra/operating/compaction/index.html#ttl
“一旦TTL过期,数据将转换为逻辑删除,该逻辑删除至少保留gc_grace_seconds。”
这些帖子将进一步讨论墓碑、TTL和
gc_grace_seconds
的细微差别-Radovan Zvoncek:https://thelastpickle.com/blog/2018/03/21/hinted-handoff-gc-grace-demystified.html对提示切换和GC宽限秒进行了解密(TLP现在是DataTax的一部分)
墓碑和幽灵数据不必担心!(我去年为DS写的):https://medium.com/building-the-open-data-stack/tombstones-and-ghost-data-dont-have-to-be-scary-with-these-tips-and-tricks-from-datastax-48f3c275b05a