环境准备:
搭建3台虚拟机 保证3台互通 在每台/etc/hosts添加主机名 ip记录即可
host1:primary
host2: standby
host3: mail
1.分别启动mongod实例,rs名字为 rs0
mongod --replSet "rs0" --dbpath /data/primary
mongod --replSet "rs0" --dbpath /data/standby
mongod --replSet "rs0" --dbpath /data/mail
2.然后随便连接到其中一台进行rs初始化
mongo
rs.initiate() //初始化操作,初始化之后不能再初始化,想修改配置可以通过rs.reconfig()
rs.conf() //查看配置
rs0:PRIMARY> rs.conf()
{
"_id" : "rs0",
"version" : 4,
"members" : [
{
"_id" : 0,
"host" : "standby:27017"
},
{
"_id" : 1,
"host" : "primary:27017"
},
{
"_id" : 2,
"host" : "mail:27017"
}
]
}
rs.status() //查看状态
rs0:PRIMARY> rs.status()
{
"set" : "rs0",
"date" : ISODate("2014-10-28T23:11:20Z"),
"myState" : 1,
"members" : [
{
"_id" : 0,
"name" : "standby:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 3205,
"optime" : Timestamp(1414537849, 1),
"optimeDate" : ISODate("2014-10-28T23:10:49Z"),
"electionTime" : Timestamp(1414534680, 1),
"electionDate" : ISODate("2014-10-28T22:18:00Z"),
"self" : true
},
{
"_id" : 1,
"name" : "primary:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 3205,
"optime" : Timestamp(1414537849, 1),
"optimeDate" : ISODate("2014-10-28T23:10:49Z"),
"lastHeartbeat" : ISODate("2014-10-28T23:11:18Z"),
"lastHeartbeatRecv" : ISODate("2014-10-28T23:11:18Z"),
"pingMs" : 1,
"syncingTo" : "standby:27017"
},
{
"_id" : 2,
"name" : "mail:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 3192,
"optime" : Timestamp(1414537849, 1),
"optimeDate" : ISODate("2014-10-28T23:10:49Z"),
"lastHeartbeat" : ISODate("2014-10-28T23:11:19Z"),
"lastHeartbeatRecv" : ISODate("2014-10-28T23:11:19Z"),
"pingMs" : 0,
"syncingTo" : "standby:27017"
}
],
"ok" : 1
}
3.然后将另外2台加到复制集中,然后3个成员的复制集就配置完毕了
rs.add("standby")
rs.add("mail")
4.如果想修改配置可以通过rs.reconfig()在primary set上操作修改配置
rs0:PRIMARY> rsconf = rs.conf()
{
"_id" : "rs0",
"version" : 3,
"members" : [
{
"_id" : 0,
"host" : "standby:27017"
},
{
"_id" : 1,
"host" : "primary:27017"
},
{
"_id" : 2,
"host" : "mail:27017"
}
]
}
rs0:PRIMARY> rs.reconfig(rsconf)
{ "ok" : 1 }
cfg = rs.conf()
cfg.members[0].host = "mongo2.example.net"
rs.reconfig(cfg)
5.移除成员从复制集中
移除成员的前提:
1.关闭需要被移除的成员mongod实例
2.连接到primary set进行移除操作
移除操作有2种方式:
方式1:
rs.remove("mail")
方式2:
cfg = rs.conf()
cfg.members.splice(2,1) //删除数组位置为2的项
rs.reconfig(cfg)
复制集初体验-不带安全的三成员复制集
最新推荐文章于 2018-12-12 21:19:06 发布