MongoDB学习(一)

MongoDB学习(一)

​ MongoDB是目前非常流行的nosql,尤其是在MongoDB4.0以后支持了事务操作,让MongoDB适应了更多的场景。目前我们在使用MongDB时,都会采用集群部署,主从结构(一主多从)。

MongoDB集群

MongoDB数据同步原理

​ MongoDB主节点接受所有的写请求,在发生新增,修改,删除操作时会向oplog中写入日志,MongoDB会有一个线程一直监听oplog这个集合,当监听到oplog变动时,就会读取日志,并将日志回放,以此来实现主从同步。

MongoDB高可用

​ MongoDB采用主从模式,当主节点宕机后,从节点会重新发起投票,选出新的主节点,从而保证集群的高可用性。每个节点和每个节点之间都有一个互相的心跳,每两秒会发送一次心跳,如果连续5次没有响应则认为该节点失联,如果失联的是主节点,则会发起投票(如何认为主节点宕机)。MongoDB的投票算法采用Rasft算法。MongDB从节点最多可以有50个,但是拥有选举权的则最多有7个。

​ 从节点当选主节点的条件:

  1. 能够和大多数节点连接

  2. openlog的数据要比别的节点都新或者相同

  3. 手动给节点设置优先级

    首先要满足1,2条件,3条件是人为的,可以不设定。

MongoDB从节点参数

​ 搭建MongoDB集群,可以给从节点设置一些参数,比如上文提到的选举时的优先级,在这里罗列四个常见参数

  1. 是否拥有选举权,最多可以设置7个拥有选举权的从节点
  2. 选举时的优先级,值越高则越越优先成为主节点,0无法成为主节点
  3. 隐藏,会复制数据但是对应用不可见。他也可以拥有选举权但是优先级必须为0
  4. 同步延迟,可以设定该节点保持与主节点的时间差。如果出现数据错误等问题,可以使用该节点数据,降低影响。

MongoDB的集群类型

副本集群

建议为一主两从

分片集群

从数据库层实现了分库分表。使用分片集群要注意在部署mongos,configserver和shard必须在不同的机器上面。尤其是configServer,机器必须要稳定。其次就是片键的选择,要根据适合的场景选择片键

  1. hash片键

    数据分布均匀但是范围查询性能很差

  2. range片键

    可能会有热点数据产生成

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值