docker 安装mongodb副本集

  1. 创建挂载目录
 mkdir -p /usr/local/src/mongodb/replica_sets/myrs_27018/data/db
 mkdir -p /usr/local/src/mongodb/replica_sets/myrs_27018/log
 mkdir -p /usr/local/src/mongodb/replica_sets/myrs_27018/conf
 touch  /usr/local/src/mongodb/replica_sets/myrs_27018/log/mongod.log
 
 mkdir -p /usr/local/src/mongodb/replica_sets/myrs_27019/data/db
 mkdir -p /usr/local/src/mongodb/replica_sets/myrs_27019/log
 mkdir -p /usr/local/src/mongodb/replica_sets/myrs_27019/conf
 touch  /usr/local/src/mongodb/replica_sets/myrs_27019/log/mongod.log

 mkdir -p /usr/local/src/mongodb/replica_sets/myrs_27020/data/db
 mkdir -p /usr/local/src/mongodb/replica_sets/myrs_27020/log
 mkdir -p /usr/local/src/mongodb/replica_sets/myrs_27020/conf
 touch  /usr/local/src/mongodb/replica_sets/myrs_27020/log/mongod.log

chmod -R 777 /usr/local/src/mongodb/replica_sets

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: myrs	

3.创建容器

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.conf

4.初始化配置副本集和主节点
使用客户端命令连接任意一个节点,但这里尽量要连接主节点(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()

你可能感兴趣的:(mongodb)