【问题标题】:Do i need decease my replication factor if replication > no.of nodes ( planning to decommission node)如果复制>节点数(计划停用节点),我是否需要降低我的复制因子
【发布时间】:2017-01-20 01:06:01
【问题描述】:

现在我们有一个具有 3 个节点和 3 个复制的 Dc,我计划停用一个节点我需要将我的复制减少到 2 还是只是停用节点将调整两个节点之间的数据复制3??

【问题讨论】:

    标签: cassandra datastax datastax-enterprise cassandra-2.1


    【解决方案1】:

    停用节点不一定会导致您的 Cassandra 集群中断,但会导致一些事情停止工作。

    如果您停用节点但不调整复制因子会发生的一些事情:

    • 首先,您的复制因子不会因为您停用一个节点而改变。否则会造成混乱。
    • 尝试使用 ConsistencyLevel.ALL 的查询(读取和写入)将失败,因为它们无法让 3 台机器参与
    • ConsistencyLevel.QUORUM 的查询将不那么可用,因为剩余的两台机器都需要响应查询才能达到法定人数。

    因为您有 3 台机器和 3 台 RF,这意味着每台机器都有完整的数据副本。停用节点update your replication factor,然后在其余两个节点上运行nodetool repair。完成此操作后,您应该一切顺利。

    【讨论】:

    • 嗨@riwalk 如果我停用我的节点,它负责的数据应该分布在其余2个节点之间,这让我感到困惑吗?如果它分布在我的 2 个节点中,那么为什么即使在 Consistency.ALL 查询也会失败?如果数据不会在其余两个节点之间分配,原因是什么?是因为其余 2 个节点具有相同的数据吗?那么退役就等于停止一个节点上的服务吧???
    • @user6288321,Consistency.ALL 意味着您需要获得 所有 个副本才能响应。如果您的 RF 为 3,那么您需要 3 个服务器来返回结果,然后才能将其视为成功查询。当然,您在 2 台机器上拥有完整的数据集……但 2 不是 3,并且使用“全部”需要 3 个响应。
    【解决方案2】:

    我的 2 美分:我建议您首先将复制更改为 2,在所有节点上运行修复,然后从要停用的节点发出“nodetool decommission”。会有数据四处移动,但这样做不会停止工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-12
      • 1970-01-01
      相关资源
      最近更新 更多