##清除节点上的gossip状态
gossip信息由每个节点在本地保存,以便在节点重启时立即使用,而不必等待gossip通信。
###步骤
如果你需要在gossip状态下纠正一个问题:
1.使用nodetool assassinate关闭问题节点。这需要大约35秒才能完成,因此请等待确认节点已被删除。
2.如果此方法不能解决问题,请停止客户端应用程序向群集发送写入操作。
3.使整个集群脱机:
- 清空每个节点。
$ nodetool options drain
- 停止每个节点:
sudo service cassandra stop
4.清除peers目录中的数据,删除peers- UUID目录中的所有目录,其中UUID是对应于相应节点的特定目录:
$ sudo rm -r /var/lib/cassandra/data/system/peers-UUID/*
**警告:**执行此步骤时请小心。该操作会清除Cassandra的内部系统数据,并可能导致应用程序停机而无法执行和验证结果。要验证结果,请在每个节点上分别运行以下查询,以确认所有节点都能够看到所有其他节点。
select * from system.peers;
5.当节点启动时清除gossip状态:
- 对于tarball安装,您可以使用命令行选项或编辑 cassandra-env.sh。要使用命令行:
#install_location /conf/cassandra-env.sh
$ install_location / bin / cassandra -Dcassandra.load_ring_state = false
- 对于软件包安装,或者如果您不使用上面的命令行选项,请将以下行添加到cassandra-env.sh文件中:
#/usr/share/cassandra/cassandra-env.sh
JVM_OPTS="$JVM_OPTS -Dcassandra.load_ring_state=false"
6.从集群节点开始,一次将集群联机到一个节点。
- Cassandra软件包安装:
$ sudo service cassandra start
- Cassandra tarball安装:
$ cd install_location
$ bin/cassandra
7.删除在cassandra-env.sh文件中添加的行。