Cassandra集群删除宕机节点

2021-01-13 17:48:59 浏览数 (1)

1.前言

因为项目要处理大数据量的环境数据,所以我们采用了Cassandra集群的方式来存储我们的数据,但是前几天集群中有一台Cassandra突然崩掉了,报错原因如下:

看了一下网上的说法,具体原因就是提交日志文件出错了,把 commitlog 文件下的所有提交日志全删掉就行了,之后up自己也尝试了

但是它却提示我无法删除,之后自己百度了半天看了网上这篇文章https://blog.csdn.net/luguifang2011/article/details/73792280感觉可行,于是自己又去尝试了一遍,但是还是没能解决问题,于是我就选择了使用了最笨的方法,就是直接在集群的配置文件里面删除这个节点,但是这个做法非常不建议大家做,不到万不得已,千万不要删节点. up好菜.

2.删除节点

删除节点就比较简单了,只要我们在一台正常的节点上操作就行了.

2.1启动Cassandra服务

这里我们进入相应的Cassandra的 bin 目录下,然后通过以下命令启动Cassandra

代码语言:javascript复制
./cassandra

2.2查看集群信息

通过以下命令即可

代码语言:javascript复制
nodetool describecluster

2.3查看节点详细信息

代码语言:javascript复制
./nodetool status

这里我们就能够看到集群里面各个节点的状态

出现DN标志的就说明是已经宕机的节点了,也就是我们需要删除的节点

2.4删除宕机节点

我们通过以下即可删除

代码语言:javascript复制
./nodetool removenode 宕机节点的Host ID

Host ID可以通过上面节点的详细查看到,这个过程会比较的漫长,查阅网上的资料,是这样的解释的,这里删除的节点并不是真的直接删除该节点,而是先将该节点上的数据全部迁移到其他的节点上面之后,才开始删除这个节点,所以时间会比较的漫长 如果想 关心删除节点状态 的话,可以通过以下的命令进行查看

代码语言:javascript复制
nodetool removenode status

如果删除过程实在是太长的话,并且数据无关紧要,可以丢弃的情况下,可以通过以下的命令 直接删除该宕机节点

代码语言:javascript复制
nodetool removenode force

2.5检查是否删除

之后我们就可以通过之前的命令 ./nodetool status 重新查看节点的状态,如果是下面的界面,

那么节点就已经成功删除了,如果还在的话,建议先重启一下Cassandra,之后再查看节点的状态,重复几次应该就能够正常删除了.

0 人点赞