gpt4 book ai didi

nodetool修复期间Cassandra副本关闭?

转载 作者:行者123 更新时间:2023-12-03 07:56:21 25 4
gpt4 key购买 nike

我正在开发一个用于 nodetool 修复的自动化脚本,它将在所有 6 个 Cassandra 节点上每周末执行一次。我们在 DC1 中有 3 个,在 DC2 中有 3 个。只想了解最坏的情况。如果在 nodetool 修复之前或期间 DC1 和 DC2 之间的连接丢失或几个副本出现故障,会发生什么情况。这可能是网络问题、网络升级(通常发生在周末)或其他原因。我知道 nodetool repair 为该节点上的每个数据范围计算 Merkle 树,并将其与其他副本上的版本进行比较。因此,如果它们在副本之间没有连接,那么 nodetool 修复会如何表现?它真的会修复节点吗?在所有节点都启动并恢复连接后,我是否必须重新运行节点工具修复。他们会不会因为这个事件而产生任何副作用?我盯着它看,但找不到太多细节。任何见解都会有所帮助。

谢谢。

最佳答案

假设您正在使用 vnodes,默认情况下这意味着每个节点有 256 个范围,但想法是相同的。

如果在 nodetool 修复已经开始后发生网络问题,您将在日志中看到某些范围已成功修复而其他范围则没有。错误会说范围修复失败,因为节点“192.168.1.1 已死”之类的。

如果在 nodetool 修复开始之前发生网络错误,则所有范围都将失败并显示相同的错误。

在这两种情况下,您都需要在解决网络问题后运行另一个 nodetool 修复。

我不知道您在这 6 个节点中拥有的数据量,但根据我的经验,如果集群可以处理它,最好在一周的不同日期每周运行一次 nodetool repair。例如,您可以在周日修复节点 1,在周一修复节点 2,依此类推。如果您有少量数据或一天中的添加/更新不是太多,您甚至可以每天运行一次修复。当你有一个已经修复的集群并且你更频繁地运行 nodetool repair 时,它会花费更少的时间来完成,但是如果你有太多的数据,它可能是不可能的。

关于副作用,如果您使用一致性级别 1,您只能注意到数据的差异,如果碰巧您对“未修复”节点运行查询,则数据将与“已修复”节点上的数据不同。例如,您可以通过将一致性级别增加到 2 来解决这个问题,然后如果有 2 个节点“未修复”并且您运行的查询是使用这 2 个节点解决的,您将再次看到差异。您在这里有一个权衡,因为避免查询中的这种“差异”的最佳选择是具有一致性级别 = 复制因子,这会带来另一个问题,当 1 个节点关闭时,整个集群关闭,您将开始接收查询超时。

希望能帮助到你!

关于nodetool修复期间Cassandra副本关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11582819/

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