MongoDB副本集初探

一、副本集简介

   副本集是一组服务器,其中有一个主节点(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)初始化副本集

原文链接

猜你喜欢

转载自blog.csdn.net/weixin_40581617/article/details/80898295