欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

mongodb的复制集及搭建

程序员文章站 2024-01-22 22:56:58
...

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

2.mongodb复制集中的读写
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。这个千万不能少了,不然主备模式就不能生效。

相关标签: mongodb 备份