MongoDB高可用之可复制集(主从)

8 篇文章 0 订阅
7 篇文章 0 订阅

什么是可复制集

可复制集是跨多个MongoDB服务器(节点)分布和维护数据的方法。MongoDB可以把数据从一个节点复制到其他节点并在修改时进行同步,集群的节点配置为自动同步数据;旧方法叫做主从复制,MongoDB 301 以后推荐使用可复制集;

     为什么要用可复制集?它有还说呢么重要性?

  •          避免数据丢失,保障数据安全,提高系统安全性;(最少3节点,最大50节点)
  •          自动化灾备机制,注解带你宕机后通过玄机产生新主机;提高系统健壮性;(7个选举节点上限)
  •          读写分离,负载均衡,提高系统性能;
  •          生产环境推荐的部署模式;

可复制集架构以及原理

 

Øoplog(操作日志)保存操作记录、时间戳

Ø数据同步:从节点与主节点保持长轮询;1.从节点查询本机oplog最新时间戳;2.查询主节点oplog晚于此时间戳的所有文档;3.加载这些文档,并根据log执行写操作;

Ø阻塞复制:writeconcern相关,不需要同步到从节点的策略(如: acknowledged Unacknowledged w1),数据同步都是异步的,其他情况都是同步;

Ø心跳机制:成员之间会每2s 进行一次心跳检测(ping操作),发现故障后进行选举和故障转移;

Ø选举制度:主节点故障后,其余节点根据优先级和bully算法选举出新的主节点,在选出主节点之前,集群服务是只读的;

 

可复制集的搭建过程(搭建一主一从一仲裁)

1、安装好3个以上节点的mongoDB

2、配置mongodb.conf,增加跟复制相关的配置如下:

replication:
  replSetName: configRS  //集群名称
  oplogSizeMB: 50 //oplog集合大小

 

3、在primary节点切换到admin库上运行可复制集的初始化命令,初始化可复制集,命令如下

复制集初始化,在主节点上执行,ip禁止使用localhost

 

#初始化集群
rs.initiate({
      _id: "configRS",
      version: 1,
      members: [{ _id: 0, host : "192.168.1.134:27017" }]});

#添加节点
rs.add("192.168.1.135:27018");//有几个节点就执行几次方法

#添加仲裁者(仲裁者没什么硬件要求)
rs.addArb("192.168.1.136:27019");

4、在每个节点运行rs.status()命令查看复制集状态;

PS:只能在主节点查询数据,但如果想在副节点查询到数据需运行rs.slaveOk();

复制集健康状况

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值