我想知道为什么不运行nodetool-removenode是最佳做法。它是用来做什么的?是否存在要运行的命令层次结构?运行所述命令时会出现什么问题?有没有使用removenode的亲身经历/噩梦故事?为什么不呢?
默认的首选顺序是:
- 替换节点选项(如果计划进行替换(
- 取消使命
- RemoveNode
- 暗杀
但是,在某些情况下,您仍然会选择较低的条目而不是较早的条目。
如果要删除的节点是可操作的,那么您通常会运行一个解除授权,并允许该节点将数据从自身流式传输到其他节点,这些节点现在将保存之前在要删除节点上的一个副本。
删除节点将导致令牌范围被重新计算和移动,可能需要所有节点开始将数据流传输到现在拥有该范围的其他节点。
如果节点不可操作,您可以执行nodetool removenode-这将触发相同的范围移动并导致大量流。默认情况下,有一些流吞吐量调节器,可以进行调整以限制这种影响。
您也可以使用nodetool [decommission | removenode] force
强制终止decommission或removenode,但这意味着数据的一个副本尚未重新建立到另一个节点,这会降低您的恢复能力。
你为什么要那样做?出于同样的流式处理原因,如果您在一段时间内接受恢复能力的损失,则可以以可控的方式逐个节点展开修复。这个选项应该而不是被视为你的"默认方法"或轻率的选择——我再怎么强调也不为过。
当decommission/removenode不可用时,最后一种选择是暗杀节点——这与执行removenode,然后立即部署部队几乎相同。然后你必须设法以同样的方式进行维修和清理。
在所有这3个选项之外-最好的选项是,如果您打算替换节点,那么执行替换而不是删除/添加是赢家-这只需要新节点有来自其他副本的数据流,并且没有进一步的令牌环范围移动。此处的说明
如果数据磁盘可用,也可以在不传输数据的情况下进行更换,此处为说明
数据税文档深入介绍了nodetool removenode的用例。
https://docs.datastax.com/en/dse/5.1/dse-admin/datastax_enterprise/tools/nodetool/toolsRemoveNode.html
为什么它会很糟糕的要点是:
警告:此命令会触发集群流。大体上在环境中,额外的流活动会导致更多的挂起nodetool tpstats输出中的八卦任务。节点可以开始显示为脱机,可能需要重新启动以清除备份日志挂起的八卦任务。
根据文件,这是应该使用的时间:
当节点关闭且nodetool decommission无法使用时,请使用nodetool removenode。仅在关闭的节点上运行此命令。