美文网首页
MongoDB 副本集部署

MongoDB 副本集部署

作者: awker | 来源:发表于2018-07-18 20:36 被阅读0次

    1、配置 hosts

    # cat /etc/hosts
    10.3.20.14  mq1
    10.3.20.51  mq2
    10.3.20.54  mq3
    

    2、修改 /etc/mongod.conf,以 10.3.20.14 为例,其他两台配置类似

    配置集群 keyfile(3台机器用同一个key)
    # openssl rand -base64 756 > mongo.key
    # mv mongo.key /var/lib/mongo/
    # chown mongod:mongod /var/lib/mongo/mongo.key
    # chmod 600 /var/lib/mongo/mongo.key
    
    配置文件如下
    # egrep -v "^$|^#" /etc/mongod.conf 
    systemLog:
      destination: file
      logAppend: true
      path: /var/log/mongodb/mongod.log
    storage:
      dbPath: /var/lib/mongo
      journal:
        enabled: true
    processManagement:
      fork: true  # fork and run in background
      pidFilePath: /var/run/mongodb/mongod.pid  # location of pidfile
      timeZoneInfo: /usr/share/zoneinfo
    net:
      port: 27017
      bindIp: 127.0.0.1,10.3.20.14  # Listen to local interface only, comment to listen on all interfaces.
    security:
      authorization: 'enabled'
      keyFile: /var/lib/mongo/mongo.key
    replication:
      oplogSizeMB: 500
      replSetName: repdata
    
    # /etc/init.d/mongod restart
    

    3、在 10.3.20.14 上开启复制集

    # mongo -u root -p 123456 10.3.20.14/admin
    > cfg={ _id:"repdata", members:[ {_id:0,host:'10.3.20.14:27017',priority:2}, {_id:1,host:'10.3.20.51:27017',priority:1}, {_id:2,host:'10.3.20.54:27017',arbiterOnly:true}] }
    > rs.initiate(cfg)
    说明: 
    // cfg 名字可选,只要跟 mongodb 参数不冲突,_id 为 Replica Set 名字,members 里面的优先级 priority 值高的为主节点,对于仲裁点一定要加上 arbiterOnly:true,否则主备模式不生效 
    // priority 表示优先级别,数值越大,表示是主节点 
    // arbiterOnly:true 表示仲裁节点 
    // 使集群cfg配置生效 rs.initiate(cfg) 
    // 查看是否生效 rs.status()
    > rs.status()
    {
        "set" : "repdata",
        "date" : ISODate("2018-07-17T07:49:30.307Z"),
        "myState" : 1,
        "term" : NumberLong(6),
        "syncingTo" : "",
        "syncSourceHost" : "",
        "syncSourceId" : -1,
        "heartbeatIntervalMillis" : NumberLong(2000),
        "optimes" : {
            "lastCommittedOpTime" : {
                "ts" : Timestamp(1531813766, 1),
                "t" : NumberLong(6)
            },
            "readConcernMajorityOpTime" : {
                "ts" : Timestamp(1531813766, 1),
                "t" : NumberLong(6)
            },
            "appliedOpTime" : {
                "ts" : Timestamp(1531813766, 1),
                "t" : NumberLong(6)
            },
            "durableOpTime" : {
                "ts" : Timestamp(1531813766, 1),
                "t" : NumberLong(6)
            }
        },
        "members" : [
            {
                "_id" : 0,
                "name" : "10.3.20.14:27017",
                "health" : 1,
                "state" : 1,
                "stateStr" : "PRIMARY",
                "uptime" : 1018,
                "optime" : {
                    "ts" : Timestamp(1531813766, 1),
                    "t" : NumberLong(6)
                },
                "optimeDate" : ISODate("2018-07-17T07:49:26Z"),
                "syncingTo" : "",
                "syncSourceHost" : "",
                "syncSourceId" : -1,
                "infoMessage" : "",
                "electionTime" : Timestamp(1531812765, 1),
                "electionDate" : ISODate("2018-07-17T07:32:45Z"),
                "configVersion" : 37521,
                "self" : true,
                "lastHeartbeatMessage" : ""
            },
            {
                "_id" : 1,
                "name" : "10.3.20.51:27017",
                "health" : 1,
                "state" : 2,
                "stateStr" : "SECONDARY",
                "uptime" : 1015,
                "optime" : {
                    "ts" : Timestamp(1531813766, 1),
                    "t" : NumberLong(6)
                },
                "optimeDurable" : {
                    "ts" : Timestamp(1531813766, 1),
                    "t" : NumberLong(6)
                },
                "optimeDate" : ISODate("2018-07-17T07:49:26Z"),
                "optimeDurableDate" : ISODate("2018-07-17T07:49:26Z"),
                "lastHeartbeat" : ISODate("2018-07-17T07:49:30.272Z"),
                "lastHeartbeatRecv" : ISODate("2018-07-17T07:49:30.275Z"),
                "pingMs" : NumberLong(0),
                "lastHeartbeatMessage" : "",
                "syncingTo" : "10.3.20.14:27017",
                "syncSourceHost" : "10.3.20.14:27017",
                "syncSourceId" : 0,
                "infoMessage" : "",
                "configVersion" : 37521
            },
            {
                "_id" : 2,
                "name" : "10.3.20.54:27017",
                "health" : 1,
                "state" : 7,
                "stateStr" : "ARBITER",
                "uptime" : 1015,
                "lastHeartbeat" : ISODate("2018-07-17T07:49:30.272Z"),
                "lastHeartbeatRecv" : ISODate("2018-07-17T07:49:29.750Z"),
                "pingMs" : NumberLong(0),
                "lastHeartbeatMessage" : "",
                "syncingTo" : "",
                "syncSourceHost" : "",
                "syncSourceId" : -1,
                "infoMessage" : "",
                "configVersion" : 37521
            }
        ],
        "ok" : 1,
        "operationTime" : Timestamp(1531813766, 1),
        "$clusterTime" : {
            "clusterTime" : Timestamp(1531813766, 1),
            "signature" : {
                "hash" : BinData(0,"v6vv5ejGutQJnR0t8z/egTzN6nE="),
                "keyId" : NumberLong("6579067222256254977")
            }
        }
    }
    

    4、Slave 启动读功能

    repdata:SECONDARY> rs.slaveOk()
    

    5、重置集群的方法

    重置集群状态,指定 Replica Set 名字,members,
    repdata:PRIMARY> cfg={ _id:"repdata", members:[ {_id:0,host:'10.3.20.14:27017',priority:2}, {_id:1,host:'10.3.20.51:27017',priority:1}, {_id:2,host:'10.3.20.54:27017',arbiterOnly:true}] };
    {
        "_id" : "repdata",
        "members" : [
            {
                "_id" : 0,
                "host" : "10.3.20.14:27017",
                "priority" : 2
            },
            {
                "_id" : 1,
                "host" : "10.3.20.51:27017",
                "priority" : 1
            },
            {
                "_id" : 2,
                "host" : "10.3.20.54:27017",
                "arbiterOnly" : true
            }
        ]
    }
    repdata:PRIMARY> rs.reconfig(cfg, {force: true})
    {
        "ok" : 1,
        "operationTime" : Timestamp(1531811275, 1),
        "$clusterTime" : {
            "clusterTime" : Timestamp(1531811275, 1),
            "signature" : {
                "hash" : BinData(0,"0uUEH9rS5Ogao1IuIxscZ0UPdzQ="),
                "keyId" : NumberLong("6579067222256254977")
            }
        }
    }
    repdata:PRIMARY> rs.conf()
    {
        "_id" : "repdata",
        "version" : 37521,
        "protocolVersion" : NumberLong(1),
        "members" : [
            {
                "_id" : 0,
                "host" : "10.3.20.14:27017",
                "arbiterOnly" : false,
                "buildIndexes" : true,
                "hidden" : false,
                "priority" : 2,
                "tags" : {
                    
                },
                "slaveDelay" : NumberLong(0),
                "votes" : 1
            },
            {
                "_id" : 1,
                "host" : "10.3.20.51:27017",
                "arbiterOnly" : false,
                "buildIndexes" : true,
                "hidden" : false,
                "priority" : 1,
                "tags" : {
                    
                },
                "slaveDelay" : NumberLong(0),
                "votes" : 1
            },
            {
                "_id" : 2,
                "host" : "10.3.20.54:27017",
                "arbiterOnly" : true,
                "buildIndexes" : true,
                "hidden" : false,
                "priority" : 0,
                "tags" : {
                    
                },
                "slaveDelay" : NumberLong(0),
                "votes" : 1
            }
        ],
        "settings" : {
            "chainingAllowed" : true,
            "heartbeatIntervalMillis" : 2000,
            "heartbeatTimeoutSecs" : 10,
            "electionTimeoutMillis" : 10000,
            "catchUpTimeoutMillis" : -1,
            "catchUpTakeoverDelayMillis" : 30000,
            "getLastErrorModes" : {
                
            },
            "getLastErrorDefaults" : {
                "w" : 1,
                "wtimeout" : 0
            },
            "replicaSetId" : ObjectId("5b4d8ac676326213278e0ac2")
        }
    }
    

    相关文章

      网友评论

          本文标题:MongoDB 副本集部署

          本文链接:https://www.haomeiwen.com/subject/aupapftx.html