2.创建配置文件mongod.conf
1. storage: dbPath: "/data/db" journal: enabled: true systemLog: destination: file path: "/data/log/mongod.log" logAppend: true net: bindIp: localhost,0.0.0.0 port: 27018 replication: replSetName: myrs 2. storage: dbPath: "/data/db" journal: enabled: true systemLog: destination: file path: "/data/log/mongod.log" logAppend: true net: bindIp: localhost,0.0.0.0 port: 27019 replication: replSetName: myrs 3. storage: dbPath: "/data/db" journal: enabled: true systemLog: destination: file path: "/data/log/mongod.log" logAppend: true net: bindIp: localhost,0.0.0.0 port: 27020 replication: replSetName: myrs3.创建容器
docker run -itd --name mongodb_rs27018 --restart=always --privileged -p 27018:27018 \ -v /usr/local/src/mongodb/replica_sets/myrs_27018/data/db:/data/db \ -v /usr/local/src/mongodb/replica_sets/myrs_27018/conf:/data/configdb \ -v /usr/local/src/mongodb/replica_sets/myrs_27018/log:/data/log/ \ mongo:4.2.8 --config /data/configdb/mongod.conf docker run -itd --name mongodb_rs27019 --restart=always --privileged -p 27019:27019 \ -v /usr/local/src/mongodb/replica_sets/myrs_27019/data/db:/data/db \ -v /usr/local/src/mongodb/replica_sets/myrs_27019/conf:/data/configdb \ -v /usr/local/src/mongodb/replica_sets/myrs_27019/log:/data/log/ \ mongo:4.2.8 --config /data/configdb/mongod.conf docker run -itd --name mongodb_rs27020 --restart=always --privileged -p 27020:27020 \ -v /usr/local/src/mongodb/replica_sets/myrs_27020/data/db:/data/db \ -v /usr/local/src/mongodb/replica_sets/myrs_27020/conf:/data/configdb \ -v /usr/local/src/mongodb/replica_sets/myrs_27020/log:/data/log/ \ mongo:4.2.8 --config /data/configdb/mongod.conf4.初始化配置副本集和主节点 使用客户端命令连接任意一个节点,但这里尽量要连接主节点(27018节点):
[root@promote log]#docker exec -it d46982e5c9ea /bin/bash root@d46982e5c9ea:/# mongo --port=27018 var config={ _id:"myrs", members:[ {_id:0,host:"192.168.204.131:27018"}, {_id:1,host:"192.168.204.131:27019"}, {_id:2,host:"192.168.204.131:27020",arbiterOnly: true,} ]} rs.initiate(config) myrs:OTHER> myrs:PRIMARY>7.查看副本集状态
myrs:PRIMARY> rs.status() { ... "members" : [ { "_id" : 0, "name" : "d46982e5c9ea:27018", "health" : 1, "state" : 1, "stateStr" : "PRIMARY", "uptime" : 658, "optime" : { "ts" : Timestamp(1593675531, 1), "t" : NumberLong(1) }, "optimeDate" : ISODate("2020-07-02T07:38:51Z"), "syncingTo" : "", "syncSourceHost" : "", "syncSourceId" : -1, "infoMessage" : "", "electionTime" : Timestamp(1593675201, 2), "electionDate" : ISODate("2020-07-02T07:33:21Z"), "configVersion" : 3, "self" : true, "lastHeartbeatMessage" : "" }, { "_id" : 1, "name" : "192.168.204.131:27019", "health" : 1, "state" : 0, "stateStr" : "STARTUP", "uptime" : 116, "optime" : { "ts" : Timestamp(0, 0), "t" : NumberLong(-1) }, "optimeDurable" : { "ts" : Timestamp(0, 0), "t" : NumberLong(-1) }, "optimeDate" : ISODate("1970-01-01T00:00:00Z"), "optimeDurableDate" : ISODate("1970-01-01T00:00:00Z"), "lastHeartbeat" : ISODate("2020-07-02T07:38:54.670Z"), "lastHeartbeatRecv" : ISODate("1970-01-01T00:00:00Z"), "pingMs" : NumberLong(0), "lastHeartbeatMessage" : "", "syncingTo" : "", "syncSourceHost" : "", "syncSourceId" : -1, "infoMessage" : "", "configVersion" : -2 }, { "_id" : 2, "name" : "192.168.204.131:27020", "health" : 1, "state" : 0, "stateStr" : "STARTUP", "uptime" : 42, "lastHeartbeat" : ISODate("2020-07-02T07:38:54.669Z"), "lastHeartbeatRecv" : ISODate("1970-01-01T00:00:00Z"), "pingMs" : NumberLong(0), "lastHeartbeatMessage" : "", "syncingTo" : "", "syncSourceHost" : "", "syncSourceId" : -1, "infoMessage" : "", "configVersion" : -2 } ] ... }8.主节点上新增一个测试db
myrs:PRIMARY> use articledb switched to db articledb myrs:PRIMARY> db articledb myrs:PRIMARY> db.comment.insert({"articleid":"100000","content":"今天天气真好,阳光 明媚","userid":"1001","nickname":"Rose","createdatetime":new Date()}) WriteResult({ "nInserted" : 1 }) myrs:PRIMARY> db.comment.find() { "_id" : ObjectId("5efd931aea01b557f213c082"), "articleid" : "100000", "content" : "今天天气真好,阳光 明媚", "userid" : "1001", "nickname" : "Rose", "createdatetime" : ISODate("2020-07-02T07:56:10.778Z") }9.副本节点接受slave
> rs.slaveOk()10.仲裁从节点接受slave
> rs.slaveOk()