Chinaunix首页 | 论坛 | 博客
  • 博客访问: 366011
  • 博文数量: 273
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1430
  • 用 户 组: 普通用户
  • 注册时间: 2018-02-02 15:57
文章分类

全部博文(273)

文章存档

2018年(273)

我的朋友

分类: 大数据

2018-07-03 15:29:15

一、副本集简介

???副本集是一组服务器,其中有一个主节点(Primary),用于处理客户的请求;还有多个备份节点(Secondary),用于保存主节点的数据副本。如果主节点崩溃了,备份节点会自动将其中一个成员升级为新的主节点。所以,在生产中,可以使用副本集将数据保存到多台服务器上,即使其中一台或者多台服务器崩溃了,也能保证应用程序的正常运行和数据安全。

二、副本集复制原理

???1.数据写入主节点,同时向local.oplog.rs集合中写入一条oplog。
???2.备份节点第一次同步数据时,会先进行init sync,然后从主节点同步全量数据
???3.随后,备份节点不断通过tailable cursor从主节点的local.oplog.rs集合中查询最新的oplog并应用到自身

三、副本集的搭建

???本文为了方便使用单台服务器,指定不同的端口号来模拟副本集的搭建,进行测试学习。
1、环境准备

主节点:192.168.1.73:28000 备份节点1192.168.1.73:28001 备份节点2192.168.1.73:28002

2、安装mongodb
???1)下载安装包并解压

# curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz    # 下载 # tar -zxvf mongodb-linux-x86_64-3.0.6.tgz                                   # 解压    
# mv  mongodb-linux-x86_64-3.0.6/ /usr/local/mongodb                         # 将解压包拷贝到指定目录

???2)将MongoDB 添加到 PATH 路径中:

# cat /root/.bash_profile 
PATH=$PATH:$HOME/bin:/usr/local/mongodb/bin
# source /root/.bash_profile

3、运行三个MongoDB服务
???1)配置文件

dbpath=/usr/local/repl0/                  #数据目录
logpath=/var/log/mongodb/repl0.log        #日志文件
logappend=true #日志追加
port = 28000 #端口
maxConns = 50 #最大连接数
pidfilepath = /var/run/repl0.pid
journal = true journalCommitInterval = 200 #刷写提交机制
fork = true #守护进程模式
syncdelay = 60 #刷写数据到日志的频率
oplogSize = 1000 #操作日志,单位M
nssize = 16 #命名空间的文件大小,默认16M,最大2G。
noauth = true unixSocketPrefix = /tmp
replSet=rs0                               #副本集名称,同一个副本集,名称必须一致

???需要注意的是:
??????1.数据目录和日志文件目录需要提前创建,否则启动MongoDB找不到路径会启动失败
??????2.由于搭建在同一台服务器上,三台MongoDB服务之间的dbpath、logpath、port需要不同,且端口无占用。
???2)运行MongoDB服务
??????运行MongoDB服务可以直接使用命令行启动,也可以根据配置文件来启动,本文选择后者。

# mongod -f mongod_28000.conf 
# mongod -f mongod_28001.conf 
# mongod -f mongod_28002.conf

???3)查看进程是否运行

# ps -ef | grep mongo

3、配置副本集
???1)登入master服务器

# mongo 192.168.1.73:28000

???2)初始化副本集


阅读(1004) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~