cassandra如何删除一个节点

cassandra集群可能有好多机器,这么多机器肯定有宕机的几率,而且机器越多,几率越大,当发生宕机的时候,你如何删除一个节点呢?

本文仅适应使用了vnodes的cassandra集群,怎么判断是否用了vnodes呢? 主要看你的cassandra.yml配置文件中,是否配置了initial_token,如果没有配置,就是使用了vnodes。使用了vnodes,删除了节点之后它会自己均衡数据,不要你手动处理。

根据官方文档的提示,操作步骤如下:

第一步:先每个机器都修复下每个keyspace
nodetool repair -h ip_address_of_node keyspace_name
第二步:如果你要删除的机器是UP状态的机器,没有宕机
你可以在要删除的机器上执行 nodetool decommission. 就直接结束了,否则继续:
第三步:如果你的机器是宕机的。
你要先用在一个活着的机器上执行nodetool status 命令,获取宕机节点的id
$ nodetool status

Datacenter: DC1
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
—  Address        Load       Tokens  Owns (effective)  Host ID                               Rack
UN  192.168.2.101  112.82 KB  256     31.7%             420129fc-0d84-42b0-be41-ef7dd3a8ad06  RAC1
DN  192.168.2.103  91.11 KB   256     33.9%             d0844a21-3698-4883-ab66-9e2fd5150edd  RAC1
UN  192.168.2.102  124.42 KB  256     32.6%             8d5ed9f4-7764-4dbd-bad8-43fddce94b7c  RAC1

第四步: 在活的节点上执行删除操作
nodetool removenode d0844a21-3698-4883-ab66-9e2fd5150edd
它会自己均衡数据,这里就直接结束了,否则继续。
第五步:再次使用nodetool status查看节点是否删除成功
$ nodetool status

Datacenter: DC1
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
—  Address        Load       Tokens  Owns (effective)  Host ID                               Rack
UN  192.168.2.101  112.82 KB  256     37.7%             420129fc-0d84-42b0-be41-ef7dd3a8ad06  RAC1
UN  192.168.2.102  124.42 KB  256     38.3%             8d5ed9f4-7764-4dbd-bad8-43fddce94b7c  RAC1

  1. fire说道:

    您好,请问我用nodetool decommission已经将一个节点移除了,然后把移除节点data目录全部删除,我在重启这个节点又有数据往这个节点进行数据同步。用nodetools status查看集群状态是看不到移除的节点,但是这个节点确实有数据往这个节点同步,请问是什么原因造成的。

留言

提示:你的email不会被公布,欢迎留言^_^

*

验证码 *