容灾 (replSet) 高可用
参考文章:
mongodb server操作: http://blog.csdn.net/mchdba/article/details/51638131
python操作:http://api.mongodb.com/python/current/examples/high_availability.html
window 平台 mongodb操作
启动 mongo server 时,需要指明 replSet 名
启动3个终端
$ mkdir -p ./copyMain/logs ./copyBk1/logs ./copyBk2/logs # 需要先建立文件夹
$ mongod.exe --port=27017 --replSet=copy --dbpath=./copyMain
$ mongod.exe --port=27018 --replSet=copy --dbpath=./copyBk1
$ mongod.exe --port=27019 --replSet=copy --dbpath=./copyBk2
replSet 名需要是一样的,默认是 27017 作为 primary (主机)
mongodb 命令 初始化集群配置
# 连接
$ mongo.exe 127.0.0.1:27018 # 登录 slave 节点
####### 下面的操作是在 mongodb 终端下操作的
# 编写 replSet 配置
################## 第一个 _id 应该是 上述的 "copy"
> config = { _id:"copy", members:[
... {_id:0,host:"localhost:27017"},
... {_id:1,host:"localhost:27018"},
... {_id:2,host:"localhost:27019"}]
... };
#初始化 副本节点
> rs.initiate(config); # 提示 {"ok":0,...}
# 初始化后
> copy:SECONDARY> rs.status()
{
"set" : "copy",
"date" : ISODate("2017-08-30T07:35:01.690Z"),
"myState" : 1,
"members" : [
{
"_id" : 0,
"name" : "localhost:27017",
"health" : 1,
"state" : 5,
"stateStr" : "STARTUP2", ################ 此处显示是否为 主机
"uptime" : 173,
"optime" : Timestamp(0, 0),
"optimeDate" : ISODate("1970-01-01T00:00:00Z"),
"lastHeartbeat" : ISODate("2017-08-30T07:35:01.461Z"),
"lastHeartbeatRecv" : ISODate("2017-08-30T07:35:01.628Z"),
"pingMs" : 0,
"configVersion" : 1
},
{
"_id" : 1,
"name" : "localhost:27018",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY", ################ 此处显示是否为 主机
"uptime" : 1767,
"optime" : Timestamp(1504078428, 1),
"optimeDate" : ISODate("2017-08-30T07:33:48Z"),
"electionTime" : Timestamp(1504078432, 1),
"electionDate" : ISODate("2017-08-30T07:33:52Z"),
"configVersion" : 1,
"self" : true
},
{
"_id" : 2,
"name" : "localhost:27019",
"health" : 1,
"state" : 5,
"stateStr" : "STARTUP2", ################ 此处显示是否为 主机
"uptime" : 173,
"optime" : Timestamp(0, 0),
"optimeDate" : ISODate("1970-01-01T00:00:00Z"),
"lastHeartbeat" : ISODate("2017-08-30T07:35:00.301Z"),
"lastHeartbeatRecv" : ISODate("2017-08-30T07:35:00.006Z"),
"pingMs" : 1,
"configVersion" : 1
}
],
"ok" : 1
}
# 继续进入另外一个 mongo.exe 127.0.0.1:27019
$ mongo.exe 127.0.0.1:27019
> rs.status() ######### 状态值和上面的是一样的 27018 为主机