代码之家  ›  专栏  ›  技术社区  ›  user1658162

couchbase群集文档未复制但正在拆分

  •  0
  • user1658162  · 技术社区  · 8 年前

    但是文档在一个节点上被分成两部分,在另一个节点上分成两部分,我需要每个文档都有两份副本,这样如果一个节点掉到另一个节点上,che仍然会将所有数据提供给我的应用程序。

    在创建集群时,我是否错过了一个设置?

    谢谢

    更新:
    以下是只有一个节点的状态 one node only

    both nodes up

    然后,当两个节点都启动并运行时,两个节点上的cbstats结果: node 1

    node 2

    如您所见,只有一个节点显示了一半的项目。这是否意味着另一半作为副本驻留,但不显示??? 我仍然可以在只有一个节点的情况下稳定运行我的应用程序吗???

    更新: 我必须手动单击故障转移,才能看到副本在其余节点上处于活动状态。由于只有两个集群,自动故障转移被禁用!!!

    2 回复  |  直到 8 年前
        1
  •  1
  •   Jeff Kurtz    8 年前

    正如您所观察到的,Couchbase服务器将跨两个节点对文档进行分区或切分。它还将根据您的单副本配置在这些节点上放置副本。

    要访问复制副本,必须使用 Client SDKs .

    例如,此Java代码将尝试检索副本( getFromReplica("id", ReplicaMode.ALL) )如果活动文档检索失败( get("id") ).

    bucket.async()
        .get("id")
        .onErrorResumeNext(bucket.async().getFromReplica("id", ReplicaMode.ALL))
        .subscribe();
    

    这个 ReplicaMode.ALL 告诉Couchbase尝试所有具有副本的节点和活动节点。

        2
  •  0
  •   user1658162    8 年前

    因此,集群中只有两个节点的情况是,自动故障转移没有按照此处的规定自动启动: https://developer.couchbase.com/documentation/server/current/clustersetup/automatic-failover.html

    这意味着除非手动触发故障转移,否则不会在剩余节点中激活数据副本。

    最好是在投入生产之前,集群中有两个以上的节点。

    老实说,在提出任何问题之前,我应该非常仔细地阅读文档。

    谢谢Jeff Kurtz的帮助,是你推动我找到了解决方案。(了解couchbase副本策略的工作原理)。