Nosql 将碎片从一个BigCoach服务器移动到另一个服务器(用于平衡)

Nosql 将碎片从一个BigCoach服务器移动到另一个服务器(用于平衡),nosql,couchdb,bigcouch,Nosql,Couchdb,Bigcouch,我目前正在测试BigCoach以获取大量数据(每天1500万条记录) 当我需要生成数据视图时,我会遇到一些平衡问题,因为我的两台机器中的一台比另一台弱得多。结果是,较好的机器完成了,没有什么事可做,而较弱的机器还有很多事要做。(单芯与双芯) 我现在的想法是将一些碎片从较弱的机器移到另一台机器上,以便它们几乎同时完成 因此,我的问题是,如何将碎片从weeker BigCoach服务器移动到更好的服务器 谢谢你的帮助+最好的问候 Andy大沙发碎片只是CouchDB数据库,因此移动它们的过程非常简单

我目前正在测试BigCoach以获取大量数据(每天1500万条记录)

当我需要生成数据视图时,我会遇到一些平衡问题,因为我的两台机器中的一台比另一台弱得多。结果是,较好的机器完成了,没有什么事可做,而较弱的机器还有很多事要做。(单芯与双芯)

我现在的想法是将一些碎片从较弱的机器移到另一台机器上,以便它们几乎同时完成

因此,我的问题是,如何将碎片从weeker BigCoach服务器移动到更好的服务器

谢谢你的帮助+最好的问候


Andy

大沙发碎片只是CouchDB数据库,因此移动它们的过程非常简单。BigCoach的未来版本将自动执行该过程,但现在,我只描述它

一点背景知识将有助于解释。BigCoach节点正在侦听两个端口5984和5986。前端端口5984看起来像CouchDB(同时是集群和容错的)。后端口5986直接与特定节点上的底层CouchDB服务器通信。您会注意到,除了数据库的碎片之外,localhost中还显示了两个额外的数据库:5986/_all_dbs。其中一个称为“节点”,您在设置集群时已经与它进行了交互。另一个称为“dbs”,包含每个集群数据库的文档,指定数据库中每个碎片的每个副本实际所在的位置

所以,要移动碎片,你需要做一些事情

  • 标识碎片文件
  • 将碎片文件复制到新服务器
  • 告诉BigCoach它的新位置
  • 如果需要,请使用复制结束
  • 第一步 在BigCoach节点的数据目录中,您将找到如下文件:

    碎片/a0000000 bFFFFFF/foo.1312544893.coach

    所有碎片都组织在shard/目录下,然后是范围,最后是名称,后跟一个随机数

    为数据库选择一个文件并记住其名称

    步骤2 使用任何方法将此文件复制到目标服务器上的同一路径。rsync和scp是不错的选择,CouchDB复制也是如此(请确保从端口5986复制到端口5986)

    步骤3 “dbs”中管理集群数据库布局的文档需要修改。看起来有点像这样

    {u id:“baz”,“u rev:“1-912fe2fd63e0a570a4ceb26fd742dffd”,“shard_后缀:[46,49,51,49,50,53,52,53,50,49,55],“changelog:[[添加”,“00000000-7fffffff”,”dev1@127.0.0.1“],[“添加”,“80000000-FFFFFF”,”dev1@127.0.0.1“]],“按节点”:{”dev1@127.0.0.1“:[“00000000-7FFFFF”,“80000000-ffffffff”],“按范围”:{“00000000-7fffffff”:”dev1@127.0.0.1"],“80000000-FFFFFF”:[“dev1@127.0.0.1“]}

    更新by_节点和by_范围值,以便已移动的碎片解析到新主机

    此时您已移动了碎片。但是,如果在开始复制文件后但在更新“dbs”文档之前有更新,则这些写入操作发生在原始节点,并且不可见,因此您应该继续执行步骤4。如果没有更新,您可以删除原始服务器上的碎片,但我建议然后检查端口5984上的数据库,确保所有文档都正确显示

    步骤4 执行从源分片到目标分片的复制,再次注意在每个分片的5986端口上执行此操作。这将确保所有更新再次可用。您现在可以在原始服务器上删除此分片的副本

    嗯,,
    罗伯特·纽森-Cloudant。

    你好,罗伯特,2年前你提到BigCoach的未来版本将自动执行重新切分过程。是否已经有一个自动化的程序来执行此操作?