如何解决卡桑德拉与恢复的节点同步
我正在尝试构建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的工作原理。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。