副本 - MongoDB EC2实例

时间:2017-06-07 13:49:17

标签: mongodb amazon-web-services amazon-ec2 database-replication

在AWS云中添加了3个EC2实例。 在3个不同的实例中安装了3个MongoDB实例,并且都运行正常。

我正在为相同的数据库添加复制。

以下是我遵循的步骤:

  1. sudo service mongod start --sslPEMKeyFile" /etc/ssl/mongodb.pem" --sslMode" requireSSL" --replSet" myReplSet" (在所有3个mongo实例中)

  2. config = {_id:" myReplSet" ,成员:[{_ id:0,主持人:" ip-10-0-0-68:27017"},{_ id:1,主持人:" ip-10-0-0- 247:27017"},{_ id:2,主持人:" ip-10-0-0-148:27017"}]}

  3. rs.initiate(配置)

  4. 错误如下:

       MongoDB Enterprise > rs.initiate(config)
       {
        "ok" : 0,
        "errmsg" : "This node was not started with the replSet option",
        "code" : 76,
        "codeName" : "NoReplicationEnabled"
      }
    

    修改

    我为所有3个实例添加了相同的安全组和弹性IP。 所有3个都是新的DB。 现在我收到错误:

       {
    "ok" : 0,
    "errmsg" : "'ip-10-0-0-148:27017' has data already, cannot initiate set.",
    "code" : 110,
    "codeName" : "CannotInitializeNodeWithData"
       }
    

    修改-2

    为一台服务器配置文件:

        # mongod.conf
    
        # for documentation of all options, see:
        #   http://docs.mongodb.org/manual/reference/configuration-options/
    
        # where to write logging data.
        systemLog:
        destination: file
        logAppend: true
        path: /var/log/mongodb/mongod.log
    
        # Where and how to store data.
        storage:
        dbPath: /var/lib/mongo
        journal:
        enabled: true
        #  engine:
        #  mmapv1:
        #  wiredTiger:
    
        # how the process runs
         processManagement:
        fork: true  # fork and run in background
         pidFilePath: /var/run/mongodb/mongod.pid  # location of pidfile
    
        # network interfaces
        net:
        port: 27017
        #  bindIp: 127.0.0.1,13.58.225.174,13.58.180.226  # Listen to local   interface only, comment to listen on all interfaces.
    
    
        #security:
    
        #operationProfiling:
    
        replication:
          replSetName: rs0
    

2 个答案:

答案 0 :(得分:1)

service start命令不接受参数。所以

sudo service mongod start --sslPEMKeyFile "/etc/ssl/mongodb.pem" --sslMode "requireSSL" --replSet "myReplSet"

相当于

sudo service mongod start

如果要将这些设置添加到mongod配置,则需要编辑/etc/mongod.conf以将其添加。由于某些选项的名称在命令行和配置文件之间有所不同,您应该查看Configuration File Options文档以确保使用正确的设置。

修改

根据您的修改和错误消息,mongod进程(ip-10-0-0-148:27017)上已有数据。您无法将已有数据的mongod进程添加到副本集。但是,您可以在已有数据的mongod进程上启动副本集。您应该连接到该mongod进程并在那里运行rs.initiate()。然后运行rs.add()将剩余的空mongod进程添加到副本集。

注意:MongoDB确实提供了MongoDB Cloud ManagerMongoDB Atlas,可以为您完成部分或全部操作。但是,它们不是免费的,所以如果您想使用它们,由您决定。

答案 1 :(得分:1)

这种方式很好。

  1. rs.initialize()
  2. rs.add()
  3. rs.add()
  4. 我在这里: https://devops.profitbricks.com/tutorials/configure-mongodb-replica-set/