节点工具修复问题

时间:2014-05-07 14:35:21

标签: cassandra

环境

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

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

创建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个小时。 此外,在过去的两周内,节点工具修复命令挂起,并且超过一天没有任何事情发生。我们在日志文件中找不到任何错误。我们不会将更多数据加载到集群中。 Cassandra建议每个节点每10天运行一次节点工具修复,并且不应该运行多个修复。但我们无法找到以下问题的答案:

  • 如何检查修复命令的状态?
  • 如果修复命令挂起,我们该怎么办?
  • 我们应该在日志文件中查看什么是错误的?
  • 如何避免并行运行2个修复命令?
  • 最重要的一个(上面总结):如何避免nodetool修复命令出现问题?

1 个答案:

答案 0 :(得分:4)

  

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

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

  

如果修复命令挂起,我们该怎么办?

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

  

我们应该在日志文件中查看什么是错误的?

查看修复会话日志,查看已启动的会话,并在节点之间发送消息。如果您遇到“网络问题”,很可能会导致您的问题。如果网络出现问题,您很可能希望设置streaming_socket_timeout_in_ms以使修复流重新启动https://issues.apache.org/jira/browse/CASSANDRA-3838

  

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

您可以使用JMX检查是否已经在运行维修。

  

最重要的一个(上面总结):如何避免nodetool修复命令出现问题?

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

相关问题