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


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

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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是 MongoDB 搭建副本的步骤: 1. 准备工作 确保已经安装了 MongoDB,可以通过以下命令检查 MongoDB 是否已经安装: ``` mongod --version ``` 2. 创建数据目录 在创建副本之前,需要为每个 MongoDB 实例创建数据目录。可以通过以下命令创建数据目录: ``` mkdir -p /data/rs1 /data/rs2 /data/rs3 ``` 其中,`/data/rs1`、`/data/rs2` 和 `/data/rs3` 分别是三个 MongoDB 实例的数据目录。 3. 启动 MongoDB 实例 使用以下命令启动三个 MongoDB 实例: ``` mongod --port 27017 --dbpath /data/rs1 --replSet rs0 mongod --port 27018 --dbpath /data/rs2 --replSet rs0 mongod --port 27019 --dbpath /data/rs3 --replSet rs0 ``` 其中,`--port` 参数指定 MongoDB 实例的端口号,`--dbpath` 参数指定数据目录的路径,`--replSet` 参数指定副本的名称。 4. 连接到其中一个 MongoDB 实例 使用以下命令连接到其中一个 MongoDB 实例: ``` mongo --port 27017 ``` 5. 初始化副本MongoDB Shell 中执行以下命令初始化副本: ``` rs.initiate() ``` 6. 添加其他 MongoDB 实例 在 MongoDB Shell 中执行以下命令添加其他 MongoDB 实例: ``` rs.add("localhost:27018") rs.add("localhost:27019") ``` 其中,`localhost:27018` 和 `localhost:27019` 分别是其他两个 MongoDB 实例的地址。 7. 查看副本状态 在 MongoDB Shell 中执行以下命令查看副本状态: ``` rs.status() ``` 如果输出结果中的 `members` 数组中有三个成员,则说明副本搭建成功。 以上就是搭建 MongoDB 副本的步骤,希望对你有帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值