- 任何时间点只有一个活跃节点,其他为备份节点,当活跃节点泵机,将会通过选举规则,从备选节点选一个当活跃节点,当泵机的节点恢复之后,则变为备用节点。
- 节点类型
stabdard:常规节点,存储完整数据,参与投票,有可能成为活跃节点
passive:投票节点,存储完整数据备份,不参与投票,不能成为活跃节点
arbiter:仲裁节点,不存数据,参与投票,不能成为活跃节点
- 选举规则:根据节点的优先权(数字0-1000包含1000)进行从大到小排序(0为不能变成活跃节点),如果优先权相同,则判断节点的数据新旧程度,最新的节点成为活跃节点,注意事项:如果备份节点最新的数据是3秒前同步的,则成为活跃节点时,则变成备份节点的数据为最新,其他的节点(包括原来活跃节点)的数据进行回滚,然后与当前活跃点进行同步。同步之前,其他节点不能成为活跃节点的候选者
- 环境搭建,建立文件目录 MS\Set1\db、log、配置文件 MS\Set2\db、log、配置文件 MS\Set2\db、log、配置文件
1、配置文件如下:
实例1
dbpath=D:\MSset\Set1\db
logpath=D:\MSset\Set1\s1.log
directoryperdb=true
logappend=true
replSet=testrs/127.0.0.1:28882
port=28881
oplogSize=10000
实例2
dbpath=D:\MSset\Set2\db
logpath=D:\MSset\Set2\s2.log
directoryperdb=true
logappend=true
replSet=testrs/127.0.0.1:28881
port=28882
oplogSize=10000
实例3
dbpath=D:\MSset\Set3\db
logpath=D:\MSset\Set3\s3.log
directoryperdb=true
logappend=true
replSet=testrs/127.0.0.1:28882 (配置文件指定replSet为副本集群的名称与关联的对应IP,可以只关联一个,开始之后Mongo可以自动感应集群其他机器)
port=28883
oplogSize=10000
2、使用mongod命令 启动实例服务。mongod --config D:\MSset\Set1\conf.conf(后面2个实例启动命令于此雷同)
3、使用mongo 命令进行登录其中一个实例, mongo 127.0.0.1:28882
因为使用配置文件只是做了物理关联,需要手动的执行命令将集群串起来,此时登录服务器是不能做读、写操作的,
需要执行命令,db.getMongo().setSlaveOk()之后获得读写权限,然后执行命令,将Mongo各个实例串联起来
db.runCommand({ "replSetInitiate":{ "_id":"testrs", "members":[ { "_id":1, "host":"127.0.0.1:28881" }, { "_id":2, "host":"127.0.0.1:28882" }, { "_id":3, "host":"127.0.0.1:28883" } ] } })
项目文件:
http://pan.baidu.com/s/1o8lwcUA