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 备份节点1:192.168.1.73:28001 备份节点2:192.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)初始化副本集