初识MongoDB(七)

  搭建集群

集群搭建网上查了有3中方案:Replica Set / Sharding / Master-Slaver

第三种基本上目前很少人使用 就不介绍了。主要介绍Replica Set  和Sharding

Replica Set 

  该部署中文翻译为副本集,就是一个主节点,N个副节点,一个仲裁节点,当主节点挂掉后,仲裁节点仲裁哪个副节点提升为主节点。

继续运行,不至于因为主节点的挂掉而影响整个数据库的使用。当原主节点恢复后,作为副节点继续运行,仲裁节点不存储数据,也不和应用程序相连,只是作为仲裁使用。仲裁节点不能缺少,缺少后,副节点无法提升为主节点。导致系统无法正常运行。

本地模拟,只创建了一个主节点(mongodb1),一个副节点(mongodb2),一个仲裁节点(mongodb3)。

在每个文件夹下创建data数据文件夹和log日志文件夹,

在mongodb1\data文件夹下创建master  存放 master.config 文件

在mongodb2\data文件夹下创建slaver  存放 slaver.config 文件

在mongodb3\data文件夹下创建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 mongodb1\bin
mongod -config d:\test\mongodb1\data\master\master.config --install --serviceName "MongoDBMaster" --serviceDisplayName "MongoDBMaster" --journal start= "auto"
pause

从服务安装.bat

@echo off
d:
cd mongodb2\bin
mongod -config d:\test\mongodb2\data\slaver\slaver.config --install --serviceName "MongoDBSlaver" --serviceDisplayName "MongoDBSlaver"  --journal start="auto"
pause

仲裁服务安装.bat

@echo off
d:
cd mongodb3\bin
mongod -config d:\test\mongodb3\data\arbiter\arbiter.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() 查看。

猜你喜欢

转载自www.cnblogs.com/bjrwx/p/9266993.html