Mongodb 副本集(官方推荐)
上篇说到了主从是不能解决自动切换的问题的,10gen团队为了解决这个问题,推出了新的模式--副本集模式。
副本集是在主从的基础上改进而来的,对比主从模式,副本集最大的进步是搞定了手动切换的问题—当主节点挂了,会自动选举下一个主节点
具体如何配置呢?
1.取名
这里给副本集取个名 ttpai
2.启动各节点
mongod --dbpath=E:\mongodb\3.2.9\slaveA\db --logpath=E:\mongodb\3.2.9\slaveA\log\log_slaveA.txt --logappend --port=27018 --replSet=ttpai
mongod --dbpath=E:\mongodb\3.2.9\slaveB\db --logpath=E:\mongodb\3.2.9\slaveB\log\log_slaveB.txt --logappend --port=27019 --replSet=ttpai
mongod --dbpath=E:\mongodb\3.2.9\slaveC\db --logpath=E:\mongodb\3.2.9\slaveC\log\log_slaveC.txt --logappend --port=27020 --replSet=ttpai
mongod --dbpath=E:\mongodb\3.2.9\slaveD\db --logpath=E:\mongodb\3.2.9\slaveD\log\log_slaveD.txt --logappend --port=27021 --replSet=ttpai
mongod --dbpath=E:\mongodb\3.2.9\mongodb\db --logpath=E:\mongodb\3.2.9\mongodb\log\log.txt --logappend --port=27017 --replSet=ttpai
3.初始化副本集
use admin;
db.runCommand(
{
"replSetInitiate":{
"_id":"ttpai",
"members":[
{"_id":1,"host":"127.0.0.1:27017"},
{"_id":2,"host":"127.0.0.1:27018"},
{"_id":3,"host":"127.0.0.1:27019"}
]
}
}
);
初始化成功后,可以在log文件中查看具体是哪个成为主(primary),哪个成为子节点(secondary)
初始化成功后,加入成员rs.add("ip:port"); 比如:rs.add("127.0.0.1:27020");
4.增加仲裁节点
use admin;
rs.addArb("127.0.0.1:27020");
查看集群的服务器状态
rs.status();
一个复制集中最多12个副本集节点,但最多只有7个投票成员(包括primary),其余为非投票成员(Non-Voting Members)。
非投票成员是复制集中数据的备份副本,不参与投票,但可以被投票或成为主节点。
副本集解决了自动选举的问题,但是,当我们的数据量非常大,到了TB的时候,一个机器已经不能负载了,那能怎么处理呢?