mongodb的复制集及搭建

1.mongodb的复制集
MongoDB复制是将数据同步在多个服务器的过程。
复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性, 并可以保证数据的安全性。
MongoDB复制集是一组拥有相同数据集的mongodb实例组成的集群。

2.mongodb复制集中的读写
这里写图片描述
写操作:
在mongodb中,进行写操作时,都是写入主节点的,同时会把操作记录在主节点的oplog记录中,而从节点则根据oplog的操作记录复制主节点的操作

读操作:
读操作也是从主节点中读取,因为由于各种原因,从节点的更新速度会慢与主节点

(这里与MYSQL的区别:虽然MYSQL可以设置主从表,而且从表可以加上read only限制,但是拥有一定权限则可以对从表进行写入操作,但是mongodb是绝对不可以)

3.mongodb复制集的特性

  • 数据一致性
    mongodb是支持主节点唯一的,很好的保证了数据的一致性(注意:Mysql是有双主结构的),但是主节点不是固定的,当主节点挂了之后,从节点会进行选举,或者是人为配置,选出一个从节点作为主节点
  • 大多数原则(保证数据的备份)
    集群存活节点小于等于二分之一时,集群则不可写,只能读。(复制集的服务器挂了一半就无法进行选举,全部变为从节点)

4.复制集中的节点类型
数据节点:存储数据,允许读写(可以作为主从节点)
投票节点:只在选举主节点时起作用,不允许存储数据

5.mongodb复制集搭建过程

  • 建立数据文件夹
mkdir -p /mongodb/data/master   
mkdir -p /mongodb/data/slaver   
mkdir -p /mongodb/data/arbiter    
#三个目录分别对应主,备,仲裁节点  
  • 建立配置文件

#master.conf  
dbpath=/mongodb/data/master  
logpath=/mongodb/log/master.log  
pidfilepath=/mongodb/master.pid  
directoryperdb=true  
logappend=true  
replSet=testrs  
bind_ip=10.10.148.130  
port=27017  
oplogSize=10000  
fork=true  
noprealloc=true  


#arbiter.conf  
dbpath=/mongodb/data/arbiter  
logpath=/mongodb/log/arbiter.log  
pidfilepath=/mongodb/arbiter.pid  
directoryperdb=true  
logappend=true  
replSet=testrs  
bind_ip=10.10.148.132  
port=27017  
oplogSize=10000  
fork=true  
noprealloc=true  

参数解释:
dbpath:数据存放目录
logpath:日志存放路径
pidfilepath:进程文件,方便停止mongodb
directoryperdb:为每一个数据库按照数据库名建立文件夹存放
logappend:以追加的方式记录日志
replSet:replica set的名字
bind_ip:mongodb所绑定的ip地址
port:mongodb进程所使用的端口号,默认为27017
oplogSize:mongodb操作日志文件的最大大小。单位为Mb,默认为硬盘剩余空间的5%
fork:以后台方式运行进程
noprealloc:不预先分配存储

  • 启动mongodb(进入每一个mongodb节点的bin目录下,启动)
./monood -f master.conf  
./mongod -f slaver.conf  
./mongod -f arbiter.conf  
  • 配置主,备,仲裁节点
    可以通过客户端连接mongodb,也可以直接在三个节点中选择一个连接mongodb

./mongo 10.10.148.130:27017   #ip和port是某个节点的地址  
 >use admin  
>cfg={ _id:"testrs", members:[ {_id:0,host:'10.10.148.130:27017',priority:2}, {_id:1,host:'10.10.148.131:27017',priority:1},   
 {_id:2,host:'10.10.148.132:27017',arbiterOnly:true}] };  
>rs.initiate(cfg)             #使配置生效 

cfg是可以任意的名字,当然最好不要是mongodb的关键字,conf,config都可以。最外层的_id表示replica set的名字,members里包含的是所有节点的地址以及优先级。优先级最高的即成为主节点,即这里的10.10.148.130:27017。特别注意的是,对于仲裁节点,需要有个特别的配置——arbiterOnly:true。这个千万不能少了,不然主备模式就不能生效。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值