mongodb:mongodb 3.0.3
host:
ct6601 192.108.56.117
ct6602 192.108.56.119
ct6604 192.108.56.120
mongodb primary:192.108.56.117:27017
mongodb secondary:192.108.56.119:27017 , 192.108.56.120:27017
一.安装mongodb
#在ct6601,ct6602,ct6604上执行以下
#mongodb.tgz文件放在/root下
[root@ct6601 ~]# ll mongo*
-rwxr--r-- 1 root root 50328650 Jun 4 2015 mongodb-linux-x86_64-rhel62-3.0.3.tgz
#解压mongodb.tgz
[root@ct6601 ~]# tar -xzvf mongodb-linux-x86_64-rhel62-3.0.3.tgz
#移动解压后的文件到/usr/local/mongodb
[root@ct6601 ~]# mv mongodb-linux-x86_64-rhel62-3.0.3 /usr/local/mongodb
#设置环境变量
[root@ct6601 ~]# echo "export PATH=\$PATH:/usr/local/mongodb/bin" >>.bash_profile
[root@ct6601 ~]# . /root/.bash_profile
#建立数据目录
[root@ct6601 ~]# mkdir /usr/local/mongodb/data
二.配置replica set
#在ct6601上执行以下
[root@ct6601 ~]# mongo 192.108.56.117:27017
> conf = { _id:"db1", members:[
{_id:0,host:"192.108.56.117:27017"},
{_id:1,host:"192.108.56.119:27017"},
{_id:2,host:"192.108.56.120:27017"}
]
}
输出:
{
"_id" : "db1",
"members" : [
{
"_id" : 0,
"host" : "192.108.56.117:27017"
},
{
"_id" : 1,
"host" : "192.108.56.119:27017"
},
{
"_id" : 2,
"host" : "192.108.56.120:27017"
}
]
}
> rs.initiate(conf)
输出:
{ "ok" : 1 }
#查看配置结果
db1:OTHER> rs.status()
输出:
{
"set" : "db1",
"date" : ISODate("2015-12-16T04:05:20.195Z"),
"myState" : 1,
"members" : [
{
"_id" : 0,
"name" : "192.108.56.117:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 233,
"optime" : Timestamp(1450238666, 1),
"optimeDate" : ISODate("2015-12-16T04:04:26Z"),
"electionTime" : Timestamp(1450238670, 1),
"electionDate" : ISODate("2015-12-16T04:04:30Z"),
"configVersion" : 1,
"self" : true
},
{
"_id" : 1,
"name" : "192.108.56.119:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 53,
"optime" : Timestamp(1450238666, 1),
"optimeDate" : ISODate("2015-12-16T04:04:26Z"),
"lastHeartbeat" : ISODate("2015-12-16T04:05:18.995Z"),
"lastHeartbeatRecv" : ISODate("2015-12-16T04:05:18.994Z"),
"pingMs" : 6,
"lastHeartbeatMessage" : "could not find member to sync from",
"configVersion" : 1
},
{
"_id" : 2,
"name" : "192.108.56.120:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 53,
"optime" : Timestamp(1450238666, 1),
"optimeDate" : ISODate("2015-12-16T04:04:26Z"),
"lastHeartbeat" : ISODate("2015-12-16T04:05:18.975Z"),
"lastHeartbeatRecv" : ISODate("2015-12-16T04:05:18.973Z"),
"pingMs" : 0,
"lastHeartbeatMessage" : "could not find member to sync from",
"configVersion" : 1
}
],
"ok" : 1
}
三.测试
#测试replica set的replication功能
[root@ct6601 ~]# mongo --port 27017
db1:PRIMARY> use test
输出:switched to db test
db1:PRIMARY> db.tb01.insert({"name":"selectshen"})
输出:WriteResult({ "nInserted" : 1 })
db1:PRIMARY> db.tb01.find()
输出:{ "_id" : ObjectId("5670e3e22d45179620bb7a97"), "name" : "selectshen" }
db1:PRIMARY> exit
[root@ct6601 ~]# mongo 192.108.56.119:27017
db1:SECONDARY> rs.slaveOk()
db1:SECONDARY> db.tb01.find()
输出:{ "_id" : ObjectId("5670e3e22d45179620bb7a97"), "name" : "selectshen" }
db1:SECONDARY> exit
#测试replica set的failover功能
#关闭192.108.56.117:27017的mongodb
[root@ct6601 ~]# mongo --port 27017
db1:PRIMARY> use admin
db1:PRIMARY> db.shutdownServer()
> exit
#可以看到primary已经切换到192.108.56.120:27017
[root@ct6601 ~]# mongo 192.108.56.119:27017
db1:SECONDARY> rs.status()
输出:
{
"set" : "db1",
"date" : ISODate("2015-12-16T04:15:28.079Z"),
"myState" : 2,
"members" : [
{
"_id" : 0,
"name" : "192.108.56.117:27017",
"health" : 0,
"state" : 8,
"stateStr" : "(not reachable/healthy)",
"uptime" : 0,
"optime" : Timestamp(0, 0),
"optimeDate" : ISODate("1970-01-01T00:00:00Z"),
"lastHeartbeat" : ISODate("2015-12-16T04:15:27.614Z"),
"lastHeartbeatRecv" : ISODate("2015-12-16T04:13:35.281Z"),
"pingMs" : 0,
"lastHeartbeatMessage" : "Failed attempt to connect to 192.108.56.117:27017; couldn't connect to server 192.108.56.117:27017 (192.108.56.117), connection attempt failed",
"configVersion" : -1
},
{
"_id" : 1,
"name" : "192.108.56.119:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 853,
"optime" : Timestamp(1450238947, 2),
"optimeDate" : ISODate("2015-12-16T04:09:07Z"),
"configVersion" : 1,
"self" : true
},
{
"_id" : 2,
"name" : "192.108.56.120:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 677,
"optime" : Timestamp(1450238947, 2),
"optimeDate" : ISODate("2015-12-16T04:09:07Z"),
"lastHeartbeat" : ISODate("2015-12-16T04:15:27.472Z"),
"lastHeartbeatRecv" : ISODate("2015-12-16T04:15:27.471Z"),
"pingMs" : 0,
"electionTime" : Timestamp(1450239217, 1),
"electionDate" : ISODate("2015-12-16T04:13:37Z"),
"configVersion" : 1
}
],
"ok" : 1
}