一台机器上搭建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 }

posted @ 2020-09-04 00:08  和尚也爱看AV  阅读(254)  评论(0)    收藏  举报