10.12.7.3
10.12.7.4
10.12.7.5
三个做副本集
1. 什么是副本集
副本集就是mongoDB副本所组成的一个集群。
同期原理是,写操作发生在主库,从库同步主库的OpLog日志。
集群中没有特定的主库,主库是选举产生,如果主库down了,会再选举出一台主库。
mongoDB也可以配置成主从模式,但,官方已经不建议使用主从模式了,替代方案是采用副本集的模式。
副本集有以下特点:
1. 最小构成是:primary,secondary,arbiter,一般部署是:primary,2 secondary。
2. 成员数应该为奇数,如果为偶数的情况下添加arbiter,arbiter不保存数据,只投票。
- 最大50 members,但是只能有 7 voting members,其他是non-voting members。
2. 安装配置
从官网下载编译好的安装包到/opt/mongodb-linux-x86_64-2.6.3-bin.tar.gz
解压到三台服务器 并重命名为mongodb,目录为/opt/mongodb
相同的命令分别启动三个mongoDB服务,指定副本集的名字为bwlistCluster
也可以在配置文件中指定,然后启动
# vi /etc/mongod.conf
replication:
replSetName:
rs0
启动命令
./bin/mongod -f /etc/mongod.conf
/opt/mongodb/bin/mongod --port 27017 --journal --fork --dbpath /opt/mongodb/data/r0 --logpath /opt/mongodb/log/mongodb-00.log --oplogSize 128 --replSet bwlistCluster
2.配置副本集
在任意一台上连接 mongodb
#
/opt/mongodb/bin/mongo
> use admin
#定义副本集配置变量,这里的 _id:” bwlistCluster” 和上面命令参数“ –replSet bwlistCluster” 要保持一样。
config = {
_id:" bwlistCluster", members:[
...
{_id:0,host:" 10.12.7.3:27017"},
...
{_id:1,host:" 10.12.7.4:27017"},
...
{_id:2,host:" 10.12.7.5:27017"}]
... }
#输出{
"_id"
: "repset",
"members"
: [
{
"_id"
: 0,
"host"
: "10.12.7.3:27017"
},
{
"_id"
: 1,
"host"
: "10.12.7.4:27017"
},
{
"_id"
: 2,
"host"
: "10.12.7.5:27017"
}
]
}
#初始化副本集配置
rs.initiate(config);
#输出成功
{
"info"
: "Config now saved locally. Should come online in about a
minute.",
"ok"
: 1
}
#查看集群节点的状态
rs.status();
#输出
bwlistCluster:SECONDARY> rs.status()
{
"set" :
"bwlistCluster",
"date" :
ISODate("2017-11-14T07:06:11Z"),
"myState" : 2,
"syncingTo" :
"10.12.7.4:27017",
"members" : [
{
"_id" : 1,
"name" : "10.12.7.4:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 435068,
"optime" : Timestamp(1510643169, 40),
"optimeDate" : ISODate("2017-11-14T07:06:09Z"),
"lastHeartbeat" : ISODate("2017-11-14T07:06:09Z"),
"lastHeartbeatRecv" :
ISODate("2017-11-14T07:06:10Z"),
"pingMs" : 0,
"electionTime" : Timestamp(1510208079, 1),
"electionDate"
: ISODate("2017-11-09T06:14:39Z")
},
{
"_id" : 2,
"name" : "10.12.7.5:27017",
"health" : 1,
"state" : 7,
"stateStr" : "ARBITER",
"uptime" : 435068,
"lastHeartbeat" : ISODate("2017-11-14T07:06:11Z"),
"lastHeartbeatRecv" :
ISODate("2017-11-14T07:06:09Z"),
"pingMs" : 0
},
{
"_id" : 3,
"name" : "10.12.7.3:27017",
"health" : 1,
"state" : 2,
"stateStr"
: "SECONDARY",
"uptime" : 435084,
"optime" : Timestamp(1510643171, 32),
"optimeDate" : ISODate("2017-11-14T07:06:11Z"),
"self" : true
}
],
"ok" : 1
}
参考文档:
https://www.cnblogs.com/ee900222/p/mongodb_2.html
http://www.lanceyan.com/tech/mongodb/mongodb_repset1.html
https://www.cnblogs.com/xusir/archive/2012/12/24/2830957.html