【问题标题】:Problems with node tool repair节点工具修复问题
【发布时间】:2014-05-07 23:53:15
【问题描述】:

环境

我们有以下在 Red Hat 6.5 上运行的 Cassandra 集群(版本 2.0.5)数据中心:

  • DC1:5 个节点,NetworkTopologyStrategy 设置为 5
  • DC2:4 个节点,NetworkTopologyStrategy 设置为 3

创建KEYSPACE的脚本如下:

CREATE KEYSPACE OUR_STUFF WITH replication = {'class':'NetworkTopologyStrategy', 'DC1':5, 'DC2':3};

我们没有任何其他密钥空间(当然 system_auth 除外)

我们总是使用LOCAL_QUORUM 选项写入一个 DC。

我们在 DC1 和 DC2 之间有网络连接问题,每天都在发生,理论上连接可能会中断数天/数周。

对于测试建议,我们将大约 50 GB 的数据加载到集群中。

问题

主要问题是命令:节点工具修复通常挂起并且可能需要几个小时 - 使用 par 选项或多或少 3 小时,没有 par 选项 6 小时。 此外,在过去 2 周中,节点工具修复命令挂起,并且超过一天没有发生任何事情。我们在日志文件中没有发现任何错误。我们不会将更多数据加载到集群中。 Cassandra 建议在每个节点上每 10 天运行一次节点工具修复,并且您不应运行多个修复。但我们找不到以下问题的答案:

  • 如何查看修复命令的状态?
  • 修复命令挂起怎么办?
  • 我们应该在日志文件中查看哪些内容以检查问题所在?
  • 如何避免并行运行 2 个修复命令?
  • 还有最重要的一个(上面的总结):如何避免 nodetool repair 命令出现问题?

【问题讨论】:

    标签: cassandra


    【解决方案1】:

    如何查看修复命令的状态?

    查看日志(以及修复命令本身的输出)将根据正在发生的情况告诉您修复的状态。 nodetool netstatsnodetool compactionstats 还会告诉您哪些操作正在等待处理。

    修复命令挂了怎么办?

    重启其中一个节点是清除修复的最简单方法。

    我们应该在日志文件中查看哪些内容以检查问题所在?

    查看修复会话日志并查看哪些会话已启动,以及节点之间已发送消息。如果您有“网络问题”,很可能是这些问题导致了您的问题。如果网络中断https://issues.apache.org/jira/browse/CASSANDRA-3838

    如何避免并行运行 2 个修复命令?

    您可以使用 JMX 检查是否有正在运行的修复。

    还有最重要的一个(就是上面的总和):如何避免 nodetool repair 命令出现问题?

    修复您的网络:/如果您的网络不可靠,修复也将不可靠,因为它确实需要使用网络...

    【讨论】:

    • 我无法修复网络,这个问题是将 Cassandra 集群拆分为 2 个数据中心的原因
    • 您可以尝试使用 -st 和 -et 选项进行修复以一次执行较小的块。因此,如果确实失败了,重新启动会更容易/更快。
    猜你喜欢
    • 2015-05-20
    • 1970-01-01
    • 2019-08-17
    • 2018-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-04
    相关资源
    最近更新 更多