2017-01-03 41 views
1

Apache Cassandra节点正在复制因子为3的3节点群集中运行。所有配置都是正确的。卡桑德拉版本是2.1.8。如何通过从种子节点流式传输来恢复Cassandra节点?

让我们假设数据在无法修复的情况下被逻辑损坏,这意味着通常的工具无法恢复数据(擦洗/修复)。

节点处于正常状态。

考虑节点恢复的情况下通过有不同于cassandra.yaml注册的种子节点流(而不是用另一个替换节点):

  1. 如果我删除顶级数据会发生什么该节点上的目录,包括commitlog,data,hints和saved_caches目录并启动服务?该节点是否会从该点恢复正常,我可以运行节点工具修复以获取最早的数据到节点中?

  2. 如果我启动服务并运行nodetool rebuild它是适当和足以解决问题吗?

  3. 如果以上都不是最佳实践,是否会解决停用节点并使其再次加入群集?

回答

2

你有更好的运气退役节点,擦拭(数据,commitlog,& saved_caches迪尔斯),将其指定IP作为cassandra-env.sh替换地址,并重新加入到集群。

nodetool rebuild在您有多个数据中心并且您希望将流指向来自特定DC时非常有用。

nodetool repair将在技术上工作(回答#1的“是”),但是您将花费大量时间等待Merkle树计算。修理每周都很好,对于修复较小的一致性差异非常有用。但是在某个点之后,比较发现差异(Merkle树)和修复它们比单纯地对节点进行分解/重新加入要慢。

相关问题