在Cassandra集群中删除节点应按以下步骤进行(适用于Cassandra v1.2.8):
- 使用
nodetool decommission
将目标节点退役。
- 一旦从已退役节点的数据流传输完成,手动删除已退役节点中的数据(可选)。
参考文档:
nodetool decommission - Decommission the *node I am connecting to*
更新:以上过程也适用于种子节点。在这种情况下,集群仍然能够顺利运行而不需要重新启动。当您需要出于其他原因重新启动集群时,请务必为所有节点更新中指定的seeds
参数。
停用目标节点
在停用开始时,已停用的节点将首先被标记为离开
(标记为L
)。在以下示例中,我们将删除node-76
:
> nodetool -host node-76 decommission
> nodetool status
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns Host ID Rack
UN node-70 9.79 GB 256 8.3% e0a7fb7a-06f8-4f8b-882d-c60bff51328a 155
UN node-80 8.9 GB 256 9.2% 43dfc22e-b838-4b0b-9b20-66a048f73d5f 155
UN node-72 9.47 GB 256 9.2% 75ebf2a9-e83c-4206-9814-3685e5fa0ab5 155
UN node-71 9.48 GB 256 9.5% cdbfafef-4bfb-4b11-9fb8-27757b0caa47 155
UN node-91 8.05 GB 256 8.4% 6711f8a7-d398-4f93-bd73-47c8325746c3 155
UN node-78 9.11 GB 256 9.4% c82ace5f-9b90-4f5c-9d86-0fbfb7ac2911 155
UL node-76 8.36 GB 256 9.5% 15d74e9e-2791-4056-a341-c02f6614b8ae 155
UN node-73 9.36 GB 256 8.9% c1dfab95-d476-4274-acac-cf6630375566 155
UN node-75 8.93 GB 256 8.2% 8789d89d-2db8-4ddf-bc2d-60ba5edfd0ad 155
UN node-74 8.91 GB 256 9.6% 581fd5bc-20d2-4528-b15d-7475eb2bf5af 155
UN node-79 9.71 GB 256 9.9% 8e192e01-e8eb-4425-9c18-60279b9046ff 155
当一个被停用的节点被标记为离开
时,它会将数据流式传输到其他活动节点。一旦流式传输完成,该节点将不再从环形结构中观察到,并且其他节点拥有的数据将增加:
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns Host ID Rack
UN node-70 9.79 GB 256 9.3% e0a7fb7a-06f8-4f8b-882d-c60bff51328a 155
UN node-80 8.92 GB 256 9.6% 43dfc22e-b838-4b0b-9b20-66a048f73d5f 155
UN node-72 9.47 GB 256 10.2% 75ebf2a9-e83c-4206-9814-3685e5fa0ab5 155
UN node-71 9.69 GB 256 10.6% cdbfafef-4bfb-4b11-9fb8-27757b0caa47 155
UN node-91 8.05 GB 256 9.1% 6711f8a7-d398-4f93-bd73-47c8325746c3 155
UN node-78 9.11 GB 256 10.5% c82ace5f-9b90-4f5c-9d86-0fbfb7ac2911 155
UN node-73 9.36 GB 256 9.7% c1dfab95-d476-4274-acac-cf6630375566 155
UN node-75 9.01 GB 256 9.5% 8789d89d-2db8-4ddf-bc2d-60ba5edfd0ad 155
UN node-74 8.91 GB 256 10.5% 581fd5bc-20d2-4528-b15d-7475eb2bf5af 155
UN node-79 9.71 GB 256 11.0% 8e192e01-e8eb-4425-9c18-60279b9046ff 155
手动清除剩余数据
一旦流式传输完成,按照 Cassandra 文档 描述的方式,可以手动移除位于已退役节点中的存储数据:
被退役节点中的数据不会自动被删除,所以如果您希望将该节点重新放回环上的不同 token 上使用,则应手动删除它。
这可以通过删除在已退役节点的 cassandra.yaml
文件中指定的 data_file_directories
、commitlog_directory
和 saved_caches_directory
中存储的数据来完成。