在进行节点工具修复时向 cassandra 发送数据
Posted
技术标签:
【中文标题】在进行节点工具修复时向 cassandra 发送数据【英文标题】:Sending data to cassandra when node tool repair is going on 【发布时间】:2016-11-14 18:05:51 【问题描述】:我需要设置一个具有 3 个节点且 RF=1 的 Cassandra 集群。 我想设置一个 cron 作业,每周在所有三个节点上同时运行一次节点工具修复。 这会影响节点工具修复过程中发送到集群的数据吗?正在进行 nodetool repair 的节点能否处理新请求?
【问题讨论】:
不,它不会影响正在发送到集群的数据,是的它将能够服务新请求 Thnx @AshrafulIslam :) 【参考方案1】:nodetool repair 所做的是比较数据片段的所有持有者之间的数据并解决不一致问题。
RF=1 意味着您只存储一份数据副本 = 没有保留副本 = 没有可比较的内容 = RF=1 的修复操作什么都不做。
单节点修复在特殊情况下是无操作的。 (c)CASSANDRA-1691
我建议您保持 RF=3(2 在某些情况下被证明难以管理,例如支持丢失节点 + 可用,3 允许您对数据有一致的视图 + 丢失 1 个节点)
【讨论】:
嗨@Ivan Thnx 回复。如果我使用 RF=2(由于某些限制不能使用 RF=3),那么我同时在所有 3 个节点上运行节点工具修复,它会影响集群中的读取或写入吗? @vamsi 您将能够向集群发送读/写。延迟会更糟,因为修复过程也需要访问磁盘,因此您的 r/w 活动将与修复竞争。默认情况下,该命令将一个接一个地修复所有节点,从而减少延迟问题。您可以在docs 中阅读。请考虑使用 RF=3 :)以上是关于在进行节点工具修复时向 cassandra 发送数据的主要内容,如果未能解决你的问题,请参考以下文章
如果 Cassandra 配置为从不执行 gc 并且所有读取和写入都是仲裁,是不是需要 nodetool 修复?
在Cassandra nodetool修复期间打开的文件太多