我有一个2节点的cassandra集群,复制因子为2,AutoBootStrap = true。在启动期间一切都很好,两个节点都互相看见。我们称这些节点为A和B.
B从不同步设置K2 ...(已超过12小时) 为什么节点B看不到集合K2 ......任何人都有任何想法?
已添加信息:
好的......这就是问题所在。 read_consistency_level默认设置为1。
因此,当我们向节点B询问集合K2时,它没有它(因为复制因子= 2时它应该是这样),它会立即返回“未找到”错误。
但是,如果我们使用读取一致性为QUORUM或ALL,则强制要求A,然后返回正确的值,B同步该键(在本地保存)。
这导致了另一个问题 - 这意味着当节点B启动时,即使经过很长时间,它也不会同步来自节点A的所有数据。现在,如果节点A出现故障,我们如何访问未同步的数据? (我刚测试过我们不能)
我想必须有办法强制同步数据。我在终端输出中看到INFO,当B出现时,从A到B的15行的暗示切换发生,但是B没有本地的那些行(因为我们仍然无法从B中读取它的一致性级别为1)。怎么回事?
答案 0 :(得分:6)
节点关闭时,cassandra同步更新有三种方式: