1.前言
因为项目要处理大数据量的环境数据,所以我们采用了Cassandra集群的方式来存储我们的数据,但是前几天集群中有一台Cassandra突然崩掉了,报错原因如下:
看了一下网上的说法,具体原因就是提交日志文件出错了,把 commitlog 文件下的所有提交日志全删掉就行了,之后up自己也尝试了
但是它却提示我无法删除,之后自己百度了半天看了网上这篇文章https://blog.csdn.net/luguifang2011/article/details/73792280感觉可行,于是自己又去尝试了一遍,但是还是没能解决问题,于是我就选择了使用了最笨的方法,就是直接在集群的配置文件里面删除这个节点,但是这个做法非常不建议大家做,不到万不得已,千万不要删节点
.
up好菜.
2.删除节点
删除节点就比较简单了,只要我们在一台正常的节点上操作就行了.
2.1启动Cassandra服务
这里我们进入相应的Cassandra的 bin
目录下,然后通过以下命令启动Cassandra
./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,之后再查看节点的状态,重复几次应该就能够正常删除了.