【问题标题】:How to make sure that data is replicated n no of times in Cassandra如何确保数据在 Cassandra 中被复制 n 次
【发布时间】:2018-12-07 13:43:22
【问题描述】:

如果说 RF = 3,在 5 个节点的单个数据中心中,那么我如何才能看到我的数据准确地落在哪个节点中的任何 keyspace.tablename,以及如何证明数据在 3 个节点上完全复制。

我尝试了各种 nodetool 命令,但没有一个能给出确切的结果或我想要看到的结果。

【问题讨论】:

  • 此链接不解释或确认RF以及数据准确保存在哪些节点上。
  • 关闭它说有数据的节点......然后查询相同的数据......你仍然会得到数据

标签: cassandra bigdata cqlsh


【解决方案1】:

您可以使用来自客户端的具有各种一致性级别 (CL) 的插入和查询来证明这一点(例如,cqlsh)。我来解释一下:

  1. 使用 RF=3 创建键空间 -> 创建表
  2. INSERTCL=ALL 的数据(这意味着所有 3 个副本都必须确认写入成功)
  3. 当所有节点都在使用 CL=ALL 查询 (SELECT) 数据时(所有 3 个副本都必须发送响应才能认为查询成功)
  4. 在 1 个节点上停止 C*
  5. 当 1 个节点关闭时(nodetool status 中的DN 状态)使用 CL=ALL 查询 (SELECT) 数据(所有 3 个副本都必须发送响应才能使查询成功)。

    一个。如果查询成功,那么所有 3 个副本仍然处于运行状态,您需要停止另一个 C* 节点。

    b.如果查询失败,将 CL 设置为CL=QUORUM(只有 3 个副本中的 2 个必须发送响应才能认为查询成功),然后再次执行查询。

您可以使用CL=ONE 甚至CL=ANY 继续此序列。

您可以阅读更多关于cqlsh 以及如何修改CL here

【讨论】:

    猜你喜欢
    • 2013-10-24
    • 2018-11-10
    • 2013-05-27
    • 1970-01-01
    • 2017-05-01
    • 1970-01-01
    • 2019-09-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多