Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何使用nodejs脚本部署mongodb复制集(复制集部署自动化)_Node.js_Mongodb_Database Replication_High Availability - Fatal编程技术网

Node.js 如何使用nodejs脚本部署mongodb复制集(复制集部署自动化)

Node.js 如何使用nodejs脚本部署mongodb复制集(复制集部署自动化),node.js,mongodb,database-replication,high-availability,Node.js,Mongodb,Database Replication,High Availability,我必须使用nodeJS脚本部署一个副本集。如果我必须在稍后的时间从副本集中添加或删除一些成员,那么我应该能够使用脚本来完成。 问题是我找不到类似于rs.initiate(config)的db.initiate(config)之类的东西。它是db.admin().initiate(config)吗?如果您想通过Node.js发送副本集配置命令,您需要使用副本集管理命令: 初始化复制集的步骤 对于任何后续更改(即添加或删除成员) MongoDB节点驱动程序测试套件中的文件包含一些用于管理副本集的

我必须使用nodeJS脚本部署一个副本集。如果我必须在稍后的时间从副本集中添加或删除一些成员,那么我应该能够使用脚本来完成。
问题是我找不到类似于rs.initiate(config)的db.initiate(config)之类的东西。它是db.admin().initiate(config)吗?

如果您想通过Node.js发送副本集配置命令,您需要使用副本集管理命令:

  • 初始化复制集的步骤

  • 对于任何后续更改(即添加或删除成员)

MongoDB节点驱动程序测试套件中的文件包含一些用于管理副本集的示例代码,这些代码尤其有用

按照
reStartAndConfigure()
,副本集配置更改的一般步骤包括:

  • 连接到
    本地
    数据库

    var connection = new Db("local", ... )
    
  • 系统中获取当前副本集配置。replset
    集合:

    db.collection('system.replset').findOne({}, function(err, doc) { ...
    
  • 迭代所有成员文档并应用任何配置更改

      for (var i = 0; i < doc.members.length; i++) { ... }
    
  • 使用
    replSetReconfig
    命令重新配置

      db.admin().command({replSetReconfig: doc}, ... )
    
您还可以通过调用
rs.add
rs.remove
shell帮助程序(不带括号),查看
replSetReconfig
命令如何在
mongo
shell中使用的示例。

您可以从MongoDB源代码中查看源代码作为起点。它在shell中充当助手,允许您启动副本集进行测试。类似地,您可以在mongo shell下查看这些代码,只需键入
rs.initiate
,而不必在末尾键入
()
括号,这将把JavaScript包装器转储到底层数据库命令。
  db.admin().command({replSetReconfig: doc}, ... )