我已经为MongoDB手动配置了一个副本集。

在三个节点上启动守护程序后,在它们启动并运行之后,从我标识为“主要”的节点上运行以下命令:

  • mongo
  • 这会让我进入mongo shell
  • use admin
  • 创建副本集配置:
    cfg = {
        _id: 'csReplicaSet',
        members: [
            { _id: 0, host: 'node1IpAddress:27017'},
            { _id: 1, host: 'node2IpAddress:27017'},
            { _id: 2, host: 'node3IpAddress:27017', arbiterOnly: true}
        ]
    }
    
  • rs.initiate(cfg)

  • 我想知道如何在mongo可以识别的JavaScript文件中执行这些步骤。我想自动化这些步骤。

    最佳答案

    将您的初始化脚本传递给mongo shell

    以编程方式,您快要准备好了。您可以将指令保存到JavaScript文件,然后在mongo命令行上运行它。如果出现错误,还应该捕获并打印rs.initiate()的结果:

    例如。 initreplica.js的内容:

    var cfg = { _id: 'csReplicaSet',
        members: [
            { _id: 0, host: 'node1IpAddress:27017'},
            { _id: 1, host: 'node2IpAddress:27017'},
            { _id: 2, host: 'node3IpAddress:27017', arbiterOnly: true}
        ]
    };
    
    var error = rs.initiate(cfg);
    printjson(error);
    

    使用以下命令从命令行运行此命令:
     mongo node1IpAddress:27017/admin initreplica.js
    

    请注意,这假设您的三个mongod节点已在包括--replSet csReplicaSet参数的相同IP地址上启动。除非您要从头开始重建副本集(并且没有现有的副本集配置),否则您只需要执行一次此初始化序列。

    我还建议您阅读Writing Scripts for the mongo shell上的手册部分。它包括一些有用的提示,例如如何打开与其他MongoDB服务器的新连接,以及一些shell帮助程序的JavaScript equivalents(例如use <db>)。

    自动化生产部署

    如果您正在寻找自动构建生产MongoDB集群的方法,则应研究诸如Chef或Puppet之类的配置管理工具的配方。作为MMS(MongoDB管理服务)的一部分,还有一个Automation feature即将发布;自动化功能目前正在Beta测试中。

    关于通过js文件配置MongoDB副本集,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24823466/

    10-12 12:35
    查看更多