gpt4 book ai didi

cassandra - 我怎么知道 nodetool 修复是否完成

转载 作者:行者123 更新时间:2023-12-03 12:24:30 26 4
gpt4 key购买 nike

我有一个 2 节点 apache cassandra (2.0.3) 集群,代表因子为 1。我在 cqlsh 中使用以下命令将代表因子更改为 2

ALTER KEYSPACE "mykeyspace" WITH REPLICATION =   { 'class' : 'SimpleStrategy', 'replication_factor' : 2 };

然后,我尝试在执行此类更改后运行推荐的“nodetool repair”。

问题是这个命令有时会很快完成。当它像这样完成时,它通常会说“丢失通知...”并且退出代码不为零。

所以我只是重复这个'nodetool repair',直到它没有错误地完成。我还检查了“nodetool status”是否报告了每个节点的预期磁盘空间。 (使用代表因子 1,每个节点都说每个节点大约 7GB,我希望在 nodetool 修复后每个节点都是 14GB,假设同时没有集群使用)

在这种情况下,是否有更正确的方法来确定“节点工具修复”已完成?

最佳答案

一般来说,你可以监控一个nodetool repair使用两个 nodetool 命令进行操作:

  • 压实统计
  • 网络统计

  • 修复操作有两个不同的阶段。首先它计算节点之间的差异(要完成的修复工作),然后通过将数据流式传输到适当的节点来处理这些差异。

    这会检查事件的 Merkle 树计算:
    $ nodetool compactionstats
    pending tasks: 0
    Active compaction remaining time : n/a

    可以通过以下方式监控修复流:
    $ nodetool netstats

    事实上, TheLastPickle的 Aaron Morton 建议使用以下 Bash 脚本/命令来监视任何事件的修复流:
    while true; do date; diff <(nodetool -h localhost netstats) <(sleep 5 && nodetool -h localhost netstats); done

    DataStax 在他们的支持论坛上发布了关于 troubleshooting hanging repairs 的帖子。 .如果您有任何挂起的修复流,您应该可以通过 netstats 看到它们。 .如果您的节点之一在修复过程中变得不可用,就会发生这种情况。要监控特定的修复操作,您可以检查日志文件中的条目,如下所示:

    DEBUG [WRITE-/172.30.77.197] 2013-05-03 12:43:09,107 OutboundTcpConnection.java (line 165) error writing to /172.30.77.197 java.net.SocketException: Connection reset



    请注意,还应在 system.log 中注明修复 session :
    [repair #02fc68f0-210c-11e7-aa88-c35a9a02c19a] Starting...

    [repair #02fc68f0-210c-11e7-aa88-c35a9a02c19a] Completed...

    关于cassandra - 我怎么知道 nodetool 修复是否完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25064717/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com