MongoDB复制集、分片集群

复制集

复制集概念

复制集是一组维护了相同数据集的mongod进程(实例),包含一个Primary(主)节点和多个Secondary(从)节点,以及可选的arbiter(仲裁节点)。
如下图所示:
MongoDB复制集架构图
Primary节点可以读写操作,并把写操作通过oplog文件同步数据给Secondary节点。
Secondary节点只能进行读操作,它会定期轮询Primary节点获取oplog。
除此之外,各个节点之间也保持着心跳,一旦Primary节点宕机,其他具有投票权的节点会立刻选出新的Primary节点,其他Secondary节点会指向新的Primary。这个重新选举的过程大概在30s内完成。

复制集的作用

  • 高可用(7*24)
  • 增大读请求的容量
  • 异地容灾
  • 冗余备份

搭建复制集

这个例子的3个节点是搭建在一台机器上,所以创建3个目录来存储3个节点的数据。分别为:
/data/mongodb/note1, /data/mongodb/note2, /data/mongodb/note3

1、创建配置文件

在每个节点的目录下创建mongod.conf配置文件。
note1节点的配置如下所示:

systemLog:
  destination: file
  path: /data/mongodb/note1/mongod.log
  logAppend: true
storage:
  dbPath: /data/mongodb/note1
net:
  bindIp: 0.0.0.0
  port: 28017
replication:
  replSetName: rs0
processManagement:
  fork: true

note2节点的配置在note1的基础上改3个属性

path: /data/mongodb/note2/mongod.log
dbpath:  /data/mongodb/note2/mongod.log
port: 28018

note3修改

  path: /data/mongodb/note3/mongod.log
  dbpath:  /data/mongodb/note3/mongod.log
  port: 28019

2、启动3个节点

mongod -f /data/mongodb/note1/mongod.log

mongod -f /data/mongodb/note2/mongod.log

mongod -f /data/mongodb/note3/mongod.log

3、初始化复制集

启动3个节点后,它们之间还是相互独立的。需要初始化复制集。

先客户端连接到note1节点

mongo --port 28017

初始化复制集

> rs.initiate({

_id:"rs0",
members:[{
_id:0,
host:"localhost:28017"
},{
_id:1,
host:"localhost:28018"
},{
_id:2,
host:"localhost:28019"
}]
})

初始化后,可通过rs.status()命令查看各个节点的情况,了解哪个是主节点,哪些是从节点。
在这里插入图片描述
在这里插入图片描述

4、从节点可读

默认情况下,从节点是不可读的。
可连接从节点,并通过下面命令开启读权限

> rs.secondaryOk() 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值