一台机器上搭建monogo集群
1.创建三个目录:
mkdir -p /data/db{1,2,3}
2.准备给个monogo的数据配置文件(不同端口,不同日志文件)
配置如下:(也许都一样,但是按照4版本配置,执行命令报错)
4版本的配置
systemlog:
destination:file
path:/data/db1/mongod.log #log path
storge:
dbpath: /data/db1 #data directory
net:
bindIp: 0.0.0.0
port: 28011 #port
replication:
replSetName: rs0
processManagement:
fork:true
3版本的配置
dbpath=/data/db1
logpath=/data/db1/mongod.log
logappend=true
bind_ip=192.168.80.25
port=27011
fork=true
noprealloc=true
replSet=test
3.启动副本(三个否要开启)
[root@redisvspgvsmysql data]# mongod -f db1/mongod.conf
note: noprealloc may hurt performance in many applications
about to fork child process, waiting until server is ready for connections.
forked process: 3374
child process started successfully, parent exiting
4.配置复制集--------rs表示复制
方法一:
通过hostanme 解析:
[root@redisvspgvsmysql data]# hostname -f
随便进入一个节点:
[root@redisvspgvsmysql data]# mongo 192.168.80.25:27011
> rs.initiate()
{
"info2" : "no configuration specified. Using a default configuration for the set",
"me" : "192.168.80.25:27011",
"ok" : 1
}
然后回撤:
test:SECONDARY>
test:PRIMARY>
test:PRIMARY> rs.status()
{
"set" : "test",
"date" : ISODate("2020-09-03T15:55:22.513Z"),
"myState" : 1,
"term" : NumberLong(1),
"heartbeatIntervalMillis" : NumberLong(2000),
"members" : [---------------最重要的
{
"_id" : 0,
"name" : "192.168.80.25:27011",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 956,
"optime" : {
"ts" : Timestamp(1599148377, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2020-09-03T15:52:57Z"),
"electionTime" : Timestamp(1599148376, 2),
"electionDate" : ISODate("2020-09-03T15:52:56Z"),
"configVersion" : 1,
"self" : true
}
],
"ok" : 1
}
加入集群
test:PRIMARY> rs.add("redisvspgvsmysql:27012")
{ "ok" : 1 }
test:PRIMARY> rs.add("redisvspgvsmysql:27013")
{ "ok" : 1 }
test:PRIMARY> rs.status()
{
"set" : "test",
"date" : ISODate("2020-09-03T15:59:54.239Z"),
"myState" : 1,
"term" : NumberLong(1),
"heartbeatIntervalMillis" : NumberLong(2000),
"members" : [
{
"_id" : 0,
"name" : "192.168.80.25:27011",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 1228,
"optime" : {
"ts" : Timestamp(1599148785, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2020-09-03T15:59:45Z"),
"electionTime" : Timestamp(1599148376, 2),
"electionDate" : ISODate("2020-09-03T15:52:56Z"),
"configVersion" : 3,
"self" : true
},
{
"_id" : 1,
"name" : "redisvspgvsmysql:27012",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 18,
"optime" : {
"ts" : Timestamp(1599148785, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2020-09-03T15:59:45Z"),
"lastHeartbeat" : ISODate("2020-09-03T15:59:53.995Z"),
"lastHeartbeatRecv" : ISODate("2020-09-03T15:59:53.018Z"),
"pingMs" : NumberLong(2),
"syncingTo" : "192.168.80.25:27011",
"configVersion" : 3
},
{
"_id" : 2,
"name" : "redisvspgvsmysql:27013",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 8,
"optime" : {
"ts" : Timestamp(1599148785, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2020-09-03T15:59:45Z"),
"lastHeartbeat" : ISODate("2020-09-03T15:59:53.990Z"),
"lastHeartbeatRecv" : ISODate("2020-09-03T15:59:53.056Z"),
"pingMs" : NumberLong(0),
"syncingTo" : "192.168.80.25:27011",
"configVersion" : 3
}
],
"ok" : 1
}
5.验证:
修改从节点可以被查看
test:SECONDARY> db.test.find()
Error: error: { "ok" : 0, "errmsg" : "not master and slaveOk=false", "code" : 13435 }
test:SECONDARY> rs.slaveOk()
test:SECONDARY> db.test.find()
test:SECONDARY>
主节点写入:
test:PRIMARY> db.test.insert({a: 1})
WriteResult({ "nInserted" : 1 })
test:PRIMARY>
从节点查看
test:SECONDARY> db.test.find()
{ "_id" : ObjectId("5f5113fce7409960975625ac"), "a" : 1 }

浙公网安备 33010602011771号