Cassandra Compaction vs Repair vs Cleanup

时间:2016-06-07 16:22:56

标签: cassandra cassandra-2.1 nodetool

发布question并阅读thisthat条款后,我仍然不理解这三种操作之间的关系 -

  • Cassandra压实任务
  • nodetool repair
  • nodetool cleanup

在压缩任务运行时是否可以处理修复任务,还是在压缩任务运行时进行清理?清理是一项需要每周执行修复的操作吗?为什么修复操作需要手动执行,而不是Cassandra默认行为?

健康集群维护的基本规则是什么?

1 个答案:

答案 0 :(得分:17)

cleanup是一种压缩,它只删除节点令牌范围之外的内容。 repair有一个"验证压缩"构建一个merkle树以与其他节点进行比较,因此nodetool repair的一部分将进行压缩。

  

在压缩任务运行时是否可以处理修复任务,还是在压缩任务运行时进行清理?

对于正常压缩,修复,清理,清理等压缩,存在共享池。这是cassandra.yaml中的concurrent_compactors设置,默认为核心数据和数据目录的组合:https://github.com/apache/cassandra/blob/cassandra-2.1/src/java/org/apache/cassandra/config/DatabaseDescriptor.java#L572

  

清理是一项需要每周执行修复的操作吗?

不,仅在拓扑发生变化后才会发生。

  

为什么修复操作需要手动执行,而且不是Cassandra的默认行为?

其手册,因为其要求可能会因您的数据和gc_grace要求而有很大差异。 https://issues.apache.org/jira/browse/CASSANDRA-10070将它带入Cassandra,尽管如此,它将是自动的。

  

健康集群维护的基本规则是什么?

我愿意(意见)说:

  • 定期备份(取决于要求和可接受的数据丢失) 这可以是从每周/每天到不断增量的任何事情。
    • 这对内部"同样重要。错误(" Opps我删除了一个客户")作为中断。即使使用强大的多直流复制,您也需要一些最小的备份。
  • 确保在这些表的gc_grace时间内至少删除一次的所有表完成修复。
  • 如果您希望能够调试问题,则度量和日志存储非常重要。