代码之家  ›  专栏  ›  技术社区  ›  iMajna

无法修复Cassandra中特定节点上的特定表

  •  2
  • iMajna  · 技术社区  · 6 年前

    我正在Cassandra 3.10的一个DC中运行5个节点。 当我试图维护这些节点时,我每天都在运行 在每个节点上

    nodetool repair -pr 
    

    和每周

    nodetool repair -full
    

    这是我唯一有困难的表:

    Table: user_tmp
            SSTable count: 4
            Space used (live): 366.71 MiB
            Space used (total): 366.71 MiB
            Space used by snapshots (total): 216.87 MiB
            Off heap memory used (total): 5.28 MiB
            SSTable Compression Ratio: 0.4690289976332873
            Number of keys (estimate): 1968368
            Memtable cell count: 2353
            Memtable data size: 84.98 KiB
            Memtable off heap memory used: 0 bytes
            Memtable switch count: 1108
            Local read count: 62938927
            Local read latency: 0.324 ms
            Local write count: 62938945
            Local write latency: 0.018 ms
            Pending flushes: 0
            Percent repaired: 76.94
            Bloom filter false positives: 0
            Bloom filter false ratio: 0.00000
            Bloom filter space used: 4.51 MiB
            Bloom filter off heap memory used: 4.51 MiB
            Index summary off heap memory used: 717.62 KiB
            Compression metadata off heap memory used: 76.96 KiB
            Compacted partition minimum bytes: 51
            Compacted partition maximum bytes: 654949
            Compacted partition mean bytes: 194
            Average live cells per slice (last five minutes): 2.503074492537404
            Maximum live cells per slice (last five minutes): 179
            Average tombstones per slice (last five minutes): 1.0
            Maximum tombstones per slice (last five minutes): 1
            Dropped Mutations: 19 bytes
    

    修复百分比 在这个和一个以上的节点上,此表上的值从不超过80%,但在其他节点上,此值高于85%。RF为3,策略为SizeTieredCompactionStrategy

    gc\u grace\u期限是10天,当我在这个期限内的某个地方时,我在这个表上得到了writetimeout,但在消费者得到这个超时后,立即被另一个超时所取代,一切都像没有发生一样继续进行。就像一次写出来一样。

    我的问题是:你是否有更好的维修策略的建议,因为我是一个不折不扣的人,每一个建议对我来说都是一个巨大的胜利,对这张桌子来说还有其他的吗? 大概 repair -inc 而不是 repair -pr

    1 回复  |  直到 6 年前
        1
  •  2
  •   Simon Fontana Oscarsson    6 年前

    Casandra 3.10中的nodetool repair命令默认为运行增量修复。增量修复存在一些主要问题,社区目前不建议运行增量修复。请参阅本文,了解有关修复和增量修复问题的一些重要见解: http://thelastpickle.com/blog/2017/12/14/should-you-use-incremental-repair.html

    与其他许多人一样,我建议您:

    nodetool repair -full -pr
    

    请注意,您需要在群集中的每个节点上运行修复。这意味着,如果您每天在一个节点上运行修复,则最多可以有7个节点(因为在默认gc\U宽限期内,您的目标应该是在7天内完成修复)。而且你还必须相信,在进行维修时不会出现任何问题,因为你必须重新启动任何出现故障的作业。

    这就是为什么像收割者这样的工具存在的原因。它可以轻松地解决这些问题,自动化维修,简化生活。Reaper运行计划的修复,并提供web界面以简化管理。我强烈建议使用reaper进行日常维护,并对计划外活动使用nodetool进行维修。

    编辑:链接 http://cassandra-reaper.io/