我是Cassandra最近的一位用户。我完成了基础知识,设置我的模式并将java应用程序插入数据库。没有遇到组合示例应用程序的任何重大问题。现在我开始搞乱节点,我一直坚持列列的内容列表。
我有5个节点,127.0.0.1,127.0.0.2,127.0.0.3,127.0.0.4,127.0.0.5和datastax.com架构“demo”,除了我使用的replication_factor为3而不是1(我保持了SimpleStrategy)。我在“users”列系列中有3行(键“jsmith”,“yomama”和“bobbyjo”)。
现在我删除了一个节点,2,3或5(我没有触及1,因为它是我唯一的种子),我连接到4,处理以下CQL查询:
select Key, full_name, email, state, gender, birth_year from users;
如预期的那样,即使丢失了1个节点,它也会给我3行。所以下一步是要求一致的结果。
select Key, full_name, email, state, gender, birth_year from users USING CONSISTENCY QUORUM ;
失败了。我无法理解。如果复制因子为3,那么我应该放弃一个被击落的节点。现在只是为了好玩,我添加了一个通用条件如下
select Key, full_name, email, state, gender, birth_year from users USING CONSISTENCY QUORUM where KEY IN ('jsmith', 'bobbyjo', 'yomama') ;
现在我使用一致性仲裁和一个节点来获取我的3行。我不能使用具有被击落节点的仲裁来浏览完整的列族是正常的,但是如果我给cassandra他们的键,我可以列出所有行吗?
答案 0 :(得分:1)
几个问题:
您是从5个节点开始,RF是3还是将群集扩展到5?
您是否尝试在发布有效声明之后发出最初失败的select语句? (如果它有效,你刚刚看到了修复操作 - 你可能没有根据你对上面#1的回答发出'nodetool repair'。
什么版本的Apache Cassandra,顺便说一下?