暂时将多节点更改为单个节点

时间:2016-11-16 06:38:30

标签: cassandra cassandra-3.0

我已经在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中节点的模式版本。

我如何解决这个问题?

1 个答案:

答案 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