cleanup
是一种仅移除节点标记范围之外内容的压缩操作。而 repair
带有 “验证压缩” ,用于构建默克尔树以与其他节点进行比较,因此 nodetool repair
的部分将进行压缩。
当正在运行压缩任务时,是否可以同时执行修复任务或清理任务?
在普通压缩、修复、清理和扫描等操作之间,存在一个共享池用于进行压缩。这是设置在 cassandra.yaml 中的 concurrent_compactors
,默认情况下是核心数和数据目录的组合:https://github.com/apache/cassandra/blob/cassandra-2.1/src/java/org/apache/cassandra/config/DatabaseDescriptor.java#L572
是否需要像修复一样每周执行 cleanup 操作?
不需要,只有在拓扑结构发生变化后才真正需要执行。
为什么修复操作需要手动执行并且不是Cassandra的默认行为?
它是手动执行的,因为它的要求在数据和 gc_grace
需求上可能有很大差异。然而 https://issues.apache.org/jira/browse/CASSANDRA-10070 正在将它纳入 Cassandra 中,因此在未来将会自动执行。
健康集群维护的基本规则是什么?
我想(个人意见):