1、上传解压软件包
cd /home/dinpay/
解压:tar -zxvf mongodb-linux-x86_64-rhel62-3.2.2.tgz
重命名: mv mongodb-linux-x86_64-rhel62-3.2.2.tgz mongodb
1.在集群的机器上建立对应的data文件夹例如:/data/mongodb/replset/data
2.建立在mongodb目录新建启动配置文件mongodb.conf:
dbpath=/data/mongodb/replset/data logpath=data/mongodb/mongodb.log logappend=true fork=true journal=true oplogSize=2048 smallfiles=true replSet=repset port=27017
3.将mongodb.conf分别复制到集群其他的机器上对应的mongodb的目录下
4.分别在集群机器上启动mongodb
Mongod -f mongodb.conf
5.在集群任意一台机器上任意一台机器登陆mongodb;打开mongo终端,使用如下命令初始化:
use admin
config = {_id: ‘repset‘, members: [{_id: 0, host: ‘IP1:27017‘,priority:1},{_id: 1, host: ‘IP2:27017‘,priority:2},{_id: 2, host: ‘IP4:27017‘,priority:3},{_id: 3, host: ‘IP4:27017‘,arbiterOnly:true}]}
rs.initiate(config);
rs.status(); #查看集群节点的状态
7.状态意义
“health” : 1, #代表机器正常
“stteStr” : “PRIMARY”, #代表是主节点,可读写,其中有以下几下状态:
STARTUP:刚加入到复制集中,配置还未加载
STARTUP2:配置已加载完,初始化状态
RECOVERING:正在恢复,不适用读
ARBITER: 仲裁者
DOWN:节点不可到达
UNKNOWN:未获取其他节点状态而不知是什么状态,一般发生在只有两个成员的架构,脑裂
REMOVED:移除复制集
ROLLBACK:数据回滚,在回滚结束时,转移到RECOVERING或SECONDARY状态
FATAL:出错。查看日志grep “replSet FATAL”找出错原因,重新做同步
PRIMARY:主节点
8.添加仲裁节点
rs.addArb("192.168.200.25:27017")
9.添加节点
rs.add("192.168.200.25:27017")
8.删除节点
Rs.remove("192.168.200.25:27017")
注意:
所有的Secondary都宕机、或则副本集中只剩下一个节点,则该节点只能为Secondary节点,也就意味着整个集群智能进行读操作而不能进行写操作,当其他的恢复时,之前的primary节点仍然是primary节点。
当某个节点宕机后重新启动该节点会有一段的时间(时间长短视集群的数据量和宕机时间而定)导致整个集群中所有节点都成为secondary而无法进行写操作(如果应用程序没有设置相应的ReadReference也可能不能进行读取操作)。
官方推荐的最小的副本集也应该具备一个primary节点和两个secondary节点。两个节点的副本集不具备真正的故障转移能力。