初识MongoDB
Posted bjrwx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初识MongoDB相关的知识,希望对你有一定的参考价值。
搭建集群
集群搭建网上查了有3中方案:Replica Set / Sharding / Master-Slaver
第三种基本上目前很少人使用 就不介绍了。主要介绍Replica Set 和Sharding
Replica Set
该部署中文翻译为副本集,就是一个主节点,N个副节点,一个仲裁节点,当主节点挂掉后,仲裁节点仲裁哪个副节点提升为主节点。
继续运行,不至于因为主节点的挂掉而影响整个数据库的使用。当原主节点恢复后,作为副节点继续运行,仲裁节点不存储数据,也不和应用程序相连,只是作为仲裁使用。仲裁节点不能缺少,缺少后,副节点无法提升为主节点。导致系统无法正常运行。
本地模拟,只创建了一个主节点(mongodb1),一个副节点(mongodb2),一个仲裁节点(mongodb3)。
在每个文件夹下创建data数据文件夹和log日志文件夹,
在mongodb1data文件夹下创建master 存放 master.config 文件
在mongodb2data文件夹下创建slaver 存放 slaver.config 文件
在mongodb3data文件夹下创建arbiter 存放 arbiter.config 文件
master.config配置文件
#master.config
dbpath=D:/test/mongodb1/data/master #数据存放目录
logpath=D:/test/mongodb1/log/master.log #日志存放目录
pidfilepath=D:/test/mongodb1/master.pid #进程文件,方便停止mongodb
directoryperdb=true #为每一个数据库按照数据库名建立文件夹存放
logappend=true #以追加的方式记录日志
replSet=testrs #副本集名称
port=27017 #端口
oplogSize=10000 #mongodb操作日志文件的最大大小。单位为Mb,默认为硬盘剩余空间的5%
bind_ip:mongodb #所绑定的ip地址 不同计算机上部署 可以用到 本地部署多个 以端口分开 需要去掉否则报错
fork=true #以后台方式运行进程 这个的在linux下是没问题的,在windows下回报错
slaver.config 和aribiter.config 和这个目录和端口不一致 其他都一样,不在一一列举
在test文件夹下创建启动批处理文件
主服务安装.bat
@echo off
d:
cd mongodb1in
mongod -config d: estmongodb1datamastermaster.config --install --serviceName "MongoDBMaster" --serviceDisplayName "MongoDBMaster" --journal start= "auto"
pause
从服务安装.bat
@echo off
d:
cd mongodb2in
mongod -config d: estmongodb2dataslaverslaver.config --install --serviceName "MongoDBSlaver" --serviceDisplayName "MongoDBSlaver" --journal start="auto"
pause
仲裁服务安装.bat
@echo off
d:
cd mongodb3in
mongod -config d: estmongodb3dataarbiterarbiter.config --install --serviceName "MongoDBArbiter" -serviceDisplayName "MongoDBArbiter" --journal start="auto"
pause
配置文件
mongo 127.0.0.1:27017
use admin
#cfg={_id:"testrs",members:[{_id:0,host:‘127.0.0.1:27017‘,priority:2},{_id:1,host:‘127.0.0.1:27018‘,priority:1},{_id:2,host:‘127.0.0.1:27019‘,arbiterOnly:true}]};
rs.initiate(cfg)
rs.add("127.0.0.1:27018");
rs.addArb("1270.0.01:27019");
rs.status()
cfg是可以任意的名字,当然最好不要是mongodb的关键字,conf,config都可以。最外层的_id表示replica set的名字,members里包含的是所有节点的地址以及优先级。优先级最高的即成为主节点,即这里的127.0.0.1:27017。特别注意的是,对于仲裁节点,需要有个特别的配置——arbiterOnly:true。这个千万不能少了,不然主备模式就不能生效。
配置完毕,可以通过 rs.status() 查看。
能看出来那个IP 是配置的 Primary( 主节点)、副节点(SECONDARY)和仲裁节点(ARBITER)
在主节点插入数据,从副节点能够查询到,如果停止主节点,仲裁节点就会提升副节点为主节点。如果远主节点恢复,恢复后变为副节点。
数据也会自动变更为主节点一样的数据。节点查询 都可以通过 rs.status() 查看。
以上是关于初识MongoDB的主要内容,如果未能解决你的问题,请参考以下文章