mongodb教程10 副本集

部署副本集

环境准备

首先配置副本路径,也就是配置三个实例,在配置之前先停止正在运行的mongod.exe,也就是我们的服务。副本集各服务器的基本信息及角色分配如下表。

启动三个实例

需要使用replSet命令,在每一个bin目录下启动,注意路径不要写错

mongodb1\bin>mongod -port 27017 -dbpath "D:\mongodb1\db" -logmongodb3\bin>mongod -port 27020 -dbpath "D:\mongodb3\db" -logpath "D:\mongodb3\log\mongo2.log" -replSet rs0ath "D:\mongodb1\log\mongo.log" -replSet rs0

\mongodb2\bin>mongod -port 27019 -dbpath "D:\mongodb2\db" -logpath "D:\mongodb2\log\mongo1.log" -replSet rs0

第一个实例(之前就创建好的了,所以在启动前一定要关闭服务)

第二个实例

第三个实例(也不要关闭窗口)

tips:

这里启动实例的方法和教程1中安装mongodb的方法一一致,都是一次性的服务,每次打开某个实例都需要启动服务才可以,如果要创建永久服务则需安装服务。,这里不再演示,详情查看Mongodb教程1方法二(创建永久服务)

配置集群

进入其中一个实例,配置设置

use admin
config={ id:"rs0",members:[
{ id:0,host:"localhost:27017","priority":3},{ id:1,host:"localhost:27019","priority":2},{ id:2,host:"localhost:27020","priority":1}]}
rs.initiate(config)

进入端口27017实例

其中第一个“id”为复制集的ID标识,即"id":“rs0”;第二个“id”是复制集内成员的标识,即"id":0。
priority为节点优先级,数字越高,优先级越高

切换admin数据库

 use admin

配置节点优先级

config={_id:"rs0",members:[
... {_id:0,host:"localhost:27017","priority":3},

{_id:1,host:"localhost:27019","priority":2},

{_id:2,host:"localhost:27020","priority":1}

]}

初始化设置

 rs.initiate(config)

成功后显示

rs0:SECONDARY>

请注意编写代码前的”>符号的变化,在没有配置好复制集之前只有”>“,初始化后有”
rs0:SECONDARY>“了,SECONDARY表示该节点是从节点,PRIMARY表示该节点是主节点。[当然,当
前显示有点问题,查看一下状态就会改变]

使用命令来查看复制集状态

rs.status()

状态正确的,当前节点是主节点

rs0:PRIMARY>

我们现在已经完成了复制集的搭建。
还有一种初始化的方法,就是先只初始化一个节点,然后再通过命令rs.add("ip:port") 来添加从节点或通过命令rs.addArb("ip:port")来添加投票节点。

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

故障转移

比如关闭主节点实例(前面一直不关闭的窗口第一个)

登录27019端口,会发现,他变成了主节点。

重新再启动27017节点时候,27019会转换成从节点

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;

  • 21
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值