Cassandra Compaction vs Repair vs Cleanup

Res*_*hef 6 cassandra nodetool cassandra-2.1

在发布问题并阅读本文和那些文章之后,我仍然不理解这三个操作之间的关系 -

  • 卡桑德拉压实任务
  • nodetool修复
  • nodetool清理

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

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

Chr*_*ink 18

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

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

正常压缩,修复,清理,擦洗等压缩的共享池.这是concurrent_compactorscassandra.yaml中的设置,默认为核心数据和数据目录的组合: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时间内至少删除一次的所有表的修复完成.
  • 如果您希望能够调试问题,则度量和日志存储非常重要.