您的位置:首页 > 数据库 > Mongodb

MongoDB--架构搭建(主从、副本集)之副本集

2017-06-21 16:11 288 查看


任何时间点只有一个活跃节点,其他为备份节点,当活跃节点泵机,将会通过选举规则,从备选节点选一个当活跃节点,当泵机的节点恢复之后,则变为备用节点。
节点类型

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"
}
]

}

})
4、查看复制集的状态信息  rs.status()

5、追加节点:可以复制其他实例,然后指定好目录,配置文件指定好复制集的名称,然后在活跃节点执行命令,rs.add("127.0.0.1:28884"),之后则会进行同步操作,
使用rs.status(),查看同步状态,当节点出现initial sync done 代表同步结束

6、删除节点:rs.remove("127.0.0.1:28885");

7、同步规则:阻塞复制,db.runCommand({"getLastError":1,"w":2}),活跃节点会阻塞写入操作,知道w设置的服务器同步了最新的写入操作为止。





项目文件:

http://pan.baidu.com/s/1o8lwcUA
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: