从 Cassandra 集群中删除节点应该是以下步骤(在 Cassandra v1.2.8 中):
- 通过 停用目标节点
nodetool decommission
。
- 一旦来自退役节点的数据流完成,手动删除退役节点中的数据(可选)。
从文档:
nodetool decommission - Decommission the *node I am connecting to*
更新:上述过程也适用于种子节点。在这种情况下,集群仍然能够顺利运行而无需重新启动。当您因其他原因需要重启集群时,请务必更新为所有节点seeds
指定的参数。cassandra.yaml
停用目标节点
停用开始时,停用的节点将首先标记为leaving
(标记为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
当一个退役节点被标记为leaving
时,它正在向其他活节点流式传输数据。流式传输完成后,从环形结构中不会观察到该节点,其他节点拥有的数据会增加:
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 文档中所述:
不会从正在退役的节点中自动删除任何数据,因此如果您想以环上的不同令牌将节点重新投入使用,则应手动删除。
这可以通过删除存储在 、 和已停用节点的文件中指定的data_file_directories
数据commitlog_directory
来完成saved_caches_directory
。cassandra.yaml