MongoDB副本集部署(windows)

副本集成员框架

  客户端程序(Client Application)通过驱动器(Driver)连接副本集主节点(Primary)进行读写操作,当主节点数据副本发生变化,此时副本节点(Secondary)通过Replication(复制)同步主节点的数据副本,使副本集中副本节点与主节点存储相同数据副本。

MongoDB副本集成员数与oplog

   MongoDB官网建议当副本集成员个数大于二时,推荐副本集成员个数为奇数个,而不使用仲裁节点。从MongoDB 3.0版本起,副本集可以多达五十名成员,最多七个参与主节点选举投票的成员,并且其它成员不得拥有投票权

  oplog是一个特殊的固定集合,它保存了副本集主节点中所有的数据变化记录,所有副本集成员(除仲裁节点)都在local.oplog.rs集合中包含一个oplog的副本,每个副本节点的oplog都会保持与主节点的oplog完全一致的状态(可能会有一些延迟)。

本教程演示mongodb4.4 副本集部署(一主两从,伪分布式)

  

节点配置
主节点localhost:27017
从节点1localhost:27018
从节点2localhost:27019

每一个节点(实例)都创建对应的数据文件(data)和日志文件(log)。例如:

启动实例(服务)

语法:

bin>mongod -port 端口号  -dbpath 数据路径 -logpath 日志路径 -replSet 副本集名称

示例:

>mongod -port 27018 -dbpath D:\MongoDB1\data -logpath D:\MongoDB1\log\mongo1.log -replSet rs0

主节点:

                                                                                                                                                        从节点1(以管理员身份启动):

从节点2:

以上三个节点启动的都是一次性服务,所以窗口不要关闭!
tips:
节点启动可能会遇到问题,主要检查端口是否被占用,和路径配置问题。若都没问题则考虑以管理员身份启动cmd。

配置副本集

维持服务不要关闭,进入任何一个节点内:

进行配置:
1.切换到admin数据库

use admin

2.配置集群

config={_id:"rs0",members:[
... {_id:0,host:"localhost:27017","priority":3},
... {_id:1,host:"localhost:27018","priority":2},
... {_id:2,host:"localhost:27019","priority":1}]}

说明:第一个“_id”为副本集名称,“priority”为优先级,数字越大,优先级越高。
3.使得配置生效

rs.initiate(config)

从节点配置

rs.slaveOk()
推荐使用
rs.secondaryOk() 
使用命令来查看复制集状态
1| rs.status()
验证MongoDB复制集

接下来需要验证一下复制集的数据同步。
在主节点(127.0.0.1:27017)上的test库collection集合c1中插入数据

use test
db.c1.insert({name:"zpq",age:1})

登陆另一个从节点(127.0.0.1:27019)验证是否同步,命令

mongo 127.0.0.1:27019
或者
mongo localhost:27019
或者
mongo port 27019(因为IP都是一样的,就不需要指定IP了)

副本集的从库持久设置

rs.slaveOk()

至此MongoDB复制集数据同步就完成了。如果感兴趣,可以继续验证复制集故障迁移(自动容灾),可以将主节点进行模拟宕机(关闭主节点的服务),然后你就会看到另外从节点就变成了主节点。

MongoDB复制集简单维护

我们可以通过修改上面这些参数来进行复制集的维护;首先登陆到主节点mongo 127.0.0.1:27017,因为只能在主节点上操作

1.增加从节点

rs.add(“ip:port”)
rs.add({" id":4,“host”:“ip:port”,“priority”:1,“hidden”:false})

2.增加投票节点

rs.addArb(“ip:port”)
rs.addArb({" id":5,“host”:“ip:port”})
rs.add({" id":5,“host”:“new node:port”,“arbiterOnly”:true})

3.删除节点

rs.remove(“ip:port”)

4.修改节点参数

(1)config = rs.conf()
(2)config.members[i].参数 = 值
(3)rs.reconfig(config, {“force”:true})或
rs.reconfig(config),前面是强制重新配置

5.主节点降级

rs.stepDown(整数),意思是在整数秒内降级

6.查看配置文件

rs.conf()

7.查看复制集状态

rs.status()

注意:
修改副本集成员配置时的限制:不能修改_id;
不能将接收rs.reconfig命令的成员的优先级设置为 0;
不能将仲裁者成员(投票节点或选举节点)变为非仲裁者成员(从节点),不能将非仲裁者成员(从节点)变为仲裁者成员(投票节点或选举节点);不能将 buildIndexes:false 改为 true;
 

                         
                        
 

  • 25
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值