Cassandra 卡桑德拉删除问题
如果我们删除了一致性级别为QUORUM的行,并且所有读取都使用相同的一致性级别,那么删除的记录将如何再次出现 例如,在RF=3且一致性级别=QUORUM的3节点群集中 我已删除一致性仲裁的一行,当时有一个节点失败。因此,失败的节点无法赶上此删除 让Cassandra在完全压缩时删除每个节点中的行。在从这两个节点中删除行之后,考虑失败的节点变为活的。 由于我们的一致性级别是QUORUM,因此任何一个副本节点的结果都为零,协调器可以假定该行已被删除,并向客户端返回nullCassandra 卡桑德拉删除问题,cassandra,Cassandra,如果我们删除了一致性级别为QUORUM的行,并且所有读取都使用相同的一致性级别,那么删除的记录将如何再次出现 例如,在RF=3且一致性级别=QUORUM的3节点群集中 我已删除一致性仲裁的一行,当时有一个节点失败。因此,失败的节点无法赶上此删除 让Cassandra在完全压缩时删除每个节点中的行。在从这两个节点中删除行之后,考虑失败的节点变为活的。 由于我们的一致性级别是QUORUM,因此任何一个副本节点的结果都为零,协调器可以假定该行已被删除,并向客户端返回null 我的疑问是,为什么cass
我的疑问是,为什么cassandra要等待gc_grace_秒才能从节点执行行的完全删除。因为如果故障节点在从其他两个节点完全删除数据后恢复,集群将不知道该节点关闭时数据是否已删除,或者数据是否已插入,但由于其他原因未能复制到其他2个节点,例如,因为这2个节点在写入过程中处于运行状态,但随后崩溃并被替换
换言之,宽限期为所有节点提供了足够的时间来同步这些情况下的所有数据。这也是为什么集群上的一轮维修需要在此宽限期内定期完成的原因如果我错了,请纠正。。我认为所有墓碑中都有一个时间戳,通过计算墓碑中的当前时间,所有超过gc宽限期的墓碑都将在主要压缩时被删除。如果这是正确的,则有一些删除的记录将超过宽限期,我们如何说我们可能必须将失败的节点带回来在宽限期结束之前。节点需要在宽限期之前返回并修复,或退出。已修复,因为必须先在该节点上复制墓碑,然后才能将其从其他节点删除。谢谢您的回复。我还需要澄清一点,这就是为什么不断修复集群中的节点是Cassandra数据库维护的一个非常重要的方面。您希望群集中的数据在节点之间始终保持同步。服务器的小故障可能会也可能不会被暗示的切换完全覆盖(我个人不会完全依赖于此)。但再加上持续的修复工作,您可以确保在前9天内,服务器有足够的时间修复所有数据。但我也会说——如果你的服务器停机几天——重建它会更安全。