如何确保在Cassandra中不重复复制数据

时间:2018-06-28 12:54:54

标签: cassandra bigdata cqlsh

如果说RF = 3,则在5个节点的单个数据中心中,如何查看我的数据在哪个keyspace.tablename的确切位置上,以及如何证明数据已在3个节点上完全复制。 / p>

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

1 个答案:

答案 0 :(得分:3)

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

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

    a。如果查询成功,则所有3个副本仍处于启动状态,您需要停止另一个C *节点。

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

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

您可以详细了解cqlsh以及如何修改CL here