卡桑德拉与恢复的节点同步

问题描述

我正在尝试构建cassandra备份和恢复过程。

比方说,我有2个节点A和B以及具有副本因子2的表C。 在表C中,我们有ID = 5和Name =“ Alex”的行。 现在,节点B发生了一些问题,我们需要将其关闭几分钟以进行还原。 同时,当节点B关闭时,有人将ID = 5的行从Name =“ Alex”更改为Name =“ Alehandro”。

再次恢复已恢复数据的节点B,并且对于ID = 5的该节点行,仍然分别包含Name =“ Alex”。

当我尝试查找ID = 5的行时会发生什么? 节点A是否将与节点B同步?

谢谢。

解决方法

Cassandra有几种方法可以将数据同步到由于故障而丢失或存在垃圾收集暂停等操作而错过写入的节点。这包括:

  • 提示-协调器节点一段时间(默认为3个小时,可配置)将收集其他节点丢失的所有写操作,并在其返回时将针对它重播这些操作
  • 修复-通过nodetool repair手动触发的显式数据同步,或可以使用诸如Reaper之类的工具将其自动化
  • 读取修复-如果您使用的一致性级别要求从多个节点(两个,LOCAL_QUORUM,QUARUM等)中读取数据,则协调器节点将检测到差异,并在必要时返回带有最新时间戳的数据,将数据固定在具有旧数据的节点上

回答您的最后一个问题-当第二个节点返回时,如果尚未重播提示,并且您直接从该节点读取,并且读取的一致性级别为ONE或LOCAL_ONE,则可以获取旧数据。 / p>

P.S。我建议您仔细阅读DSE Architecture Guide-它涵盖了Cassandra的工作原理。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...