我已经在3个节点上配置了cassandra 3.0.9,但有时我只能使用1个节点。我已从网络断开其他2个节点,也从Cassandra.yaml,rackdc和拓扑文件中删除了两个节点的条目。
当我检查节点工具状态时,它向我显示两个向下节点。当我尝试在cqlsh上执行任何查询时,它给出了以下错误:
块引用 OperationTimedOut:errors = {'127.0.0.1':'请求在等待架构协议时超时。请参阅Session.execute_async和Cluster.max_schema_agreement_wait。'},last_host = 127.0.0.1
块引用 警告:检测到架构版本不匹配;检查system.local和system.peers中节点的模式版本。
我如何解决这个问题?
答案 0 :(得分:2)
这不是您从Cassandra集群中删除节点的方式。事实上,你所做的事情是非常危险的。通常,您使用$('#myname').val('name').change();
。如果你的其他两个节点仍然完好无损并且只是离线,我建议暂时将它们重新联机,让decommission做到这一点。
我还要把它扔出去 - 除非所有的密钥空间都有RF = 3,否则您可能会使用上面的步骤丢失大部分数据。 Cassandra在相应DC中的节点之间均匀地分布数据。我在上面提到的退役步骤重新分配了数据。
现在,如果您没有其他2个节点来运行nodetool decommission
,则可能必须删除nodetool decommission
节点,最糟糕的情况是nodetool removenode
。
请查看这些文档以获取参考资料以及删除节点的完整步骤:https://docs.datastax.com/en/cassandra/3.0/cassandra/operations/opsAddingRemovingNodeTOC.html