1.在配置文件里配置replicaset的名称
例:
replication:
replSetName: "pisa_fls_1"
所有的处于同一replicaset下的mongodb的replSetName必须相同
2.分别将处于同一replicaset下的mongodb启动
3.命令行连接主mongodb服务
./mongo --port 8000 --host 10.130.161.98
4.使用rs.initiate()来初始化一个replicaset集合,使用默认配置
如果没有默认配置,可以手动添加,例
rsconf = {
_id: "rs0",
members: [
{
_id: 0,
host: "<hostname>:27017"
}
]
}
5.使用rs.conf()来显示配置
> rs.conf()
{
"_id" : "pisa_fls_1",
"version" : 1,
"members" : [
{
"_id" : 0,
"host" : "10.130.161.98:8000"
}
]
}
6.使用rs.add()来添加其他的成员
pisa_fls_1:PRIMARY> rs.add("10.130.161.98:8001")
{ "ok" : 1 }
pisa_fls_1:PRIMARY> rs.add("10.130.161.98:8002")
{ "ok" : 1 }
pisa_fls_1:PRIMARY> rs.conf()
{
"_id" : "pisa_fls_1",
"version" : 3,
"members" : [
{
"_id" : 0,
"host" : "10.130.161.98:8000"
},
{
"_id" : 1,
"host" : "10.130.161.98:8001"
},
{
"_id" : 2,
"host" : "10.130.161.98:8002"
}
]
}
7.使用rs.status()显示当前状态
pisa_fls_1:PRIMARY> rs.status()
{
"set" : "pisa_fls_1",
"date" : ISODate("2014-09-17T09:32:58Z"),
"myState" : 1,
"members" : [
{
"_id" : 0,
"name" : "10.130.161.98:8000",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 360,
"optime" : Timestamp(1410946361, 1),
"optimeDate" : ISODate("2014-09-17T09:32:41Z"),
"electionTime" : Timestamp(1410946275, 2),
"electionDate" : ISODate("2014-09-17T09:31:15Z"),
"self" : true
},
{
"_id" : 1,
"name" : "10.130.161.98:8001",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 22,
"optime" : Timestamp(1410946361, 1),
"optimeDate" : ISODate("2014-09-17T09:32:41Z"),
"lastHeartbeat" : ISODate("2014-09-17T09:32:58Z"),
"lastHeartbeatRecv" : ISODate("2014-09-17T09:32:58Z"),
"pingMs" : 0,
"syncingTo" : "10.130.161.98:8000"
},
{
"_id" : 2,
"name" : "10.130.161.98:8002",
"health" : 1,
"state" : 5,
"stateStr" : "STARTUP2",
"uptime" : 17,
"optime" : Timestamp(0, 0),
"optimeDate" : ISODate("1970-01-01T00:00:00Z"),
"lastHeartbeat" : ISODate("2014-09-17T09:32:57Z"),
"lastHeartbeatRecv" : ISODate("2014-09-17T09:32:57Z"),
"pingMs" : 0,
"lastHeartbeatMessage" : "initial sync need a member to be primary or secondary to do our initial sync"
}
],
"ok" : 1
}
8.配置优先级为0的成员
在主服务上,使用任一变量名拷贝replicaset配置(变量名里面不能有下划线),例变量名为pisaCfg
pisa_fls_1:PRIMARY> pisaCfg=rs.conf()
{
"_id" : "pisa_fls_1",
"version" : 3,
"members" : [
{
"_id" : 0,
"host" : "10.130.161.98:8000"
},
{
"_id" : 1,
"host" : "10.130.161.98:8001"
},
{
"_id" : 2,
"host" : "10.130.161.98:8002"
}
]
}
设置优先级
pisa_fls_1:PRIMARY> pisaCfg.members[2].priority=0
0
使用rs.reconfig()更新配置到集合中,使其升效
pisa_fls_1:PRIMARY> rs.reconfig(pisaCfg)
2014-09-17T02:45:50.769-0700 DBClientCursor::init call() failed
2014-09-17T02:45:50.783-0700 trying reconnect to 10.130.161.98:8000 (10.130.161.98) failed
2014-09-17T02:45:50.784-0700 reconnect 10.130.161.98:8000 (10.130.161.98) ok
reconnected to server after rs command (which is normal)
9.设置投票权为0的成员
pisaCfg = rs.conf()
pisaCfg.members[2].votes = 0
rs.reconfig(pisaCfg)
10.移除成员
首先将要移除的成员停止
然后有两种方式移除
(1)使用rs.remove()
rs.remove("10.130.161.98:8001")
(2)使用rs.reconfig(),例如移除第二个成员,在主服务上执行
pisaCfg = rs.conf()
pisaCfg.members.splice(2,1)
rs.reconfig(pisaCfg)