【问题标题】:Cassandra : cqlsh noHostAvailable error on select queryCassandra:选择查询时出现 cqlsh noHostAvailable 错误
【发布时间】:2020-01-13 20:58:49
【问题描述】:

我收到一个错误 :noHostAvailable 在 cqlsh 当我对一个表运行选择查询时,虽然我可以在该表中插入。

当我尝试 nodetool status 命令时,我发现...

 Datacenter: datacenter1


 Status=Up/Down|/ State=Normal/Leaving/Joining/Moving
 --  Address       Load       Tokens       Owns (effective)  Host ID                               

 Rack

 DN  172.22.4.140  ?          256          65.0%             
 UN  127.0.0.1     2.05 MiB   256          69.8%             
 DN  172.22.8.44   ?          256          65.2%             

我只有单节点集群的设置,如何将此设置更改为单节点,我是否还需要更改我的密钥空间,我怀疑这需要多个节点。

【问题讨论】:

  • 使用的复制因子(信息的副本数量)和一致性级别是多少?您很可能需要首先处理报告为“关闭”(DN) 的节点才能插入和选择。

标签: cassandra cqlsh


【解决方案1】:

节点问题: 看看你的/etc/cassandra/cassandra.yml 部分种子。 它应该只包含你的 ip - 种子:“YOUR_IP”

选择: 您需要检查复制因子,因此运行: cqlsh> 描述键空间 YUOR_KEYSAPCE;

如果大于 1 您可以通过以下方式更改它:

ALTER KEYSPACE keyspace_name 
WITH REPLICATION =  { 'class' : 'SimpleStrategy', 'replication_factor' : 1 };

然后运行nodetool repair

如果之后找不到问题,可以重命名集群:

登录cqlsh

UPDATE system.local SET cluster_name = 'YOUR_CLUSTER_NAME' where key='local';

退出cqlsh

nodetool flush

将 cassandra.yaml 集群名称编辑为 YOUR_CLUSTER_NAME。

重启 cassandra。

【讨论】:

    【解决方案2】:

    您的数据似乎驻留在当前已关闭的节点上。 根据上述输出,在 3 节点集群中,2 个节点已关闭,复制因子为 1。在这种情况下,您的选择查询将发送到协调器节点,但协调器节点未从其他节点获取数据,导致这些节点已关闭。请尝试启动其他节点并尝试 SELECT 它将起作用。

    【讨论】:

      猜你喜欢
      • 2018-01-08
      • 2020-02-18
      • 2019-06-18
      • 2021-01-27
      • 2017-06-12
      • 2015-03-02
      • 2013-10-06
      • 2016-01-14
      • 2015-05-26
      相关资源
      最近更新 更多