MongoDB系列—— Window 搭建Mongodb 集群

Mongodb的集群方式的搭建有三种:Replica Set / Sharding / Master-Slaver。这里只说明最简单的集群搭建方式(Replica Set)

Replica Set

//img-my.csdn.net/uploads/201301/13/1358056331_2790.png

      Mongodb(M)表示主节点,Mongodb(S)表示备节点,Mongodb(A)表示仲裁节点。主备节点存储数据,仲裁节点不存储数据。客户端同时连接主节点与备节点,不连接仲裁节点。  

      默认设置下,主节点提供所有增删查改服务,备节点不提供任何服务。但是可以通过设置使备节点提供查询服务,这样就可以减少主节点的压力,当客户端进行数据查询时,请求自动转到备节点上。

      仲裁节点是一种特殊的节点,它本身并不存储数据,主要的作用是决定哪一个备节点在主节点挂掉之后提升为主节点,所以客户端不需要连接此节点。这里虽然只有 一个备节点,但是仍然需要一个仲裁节点来提升备节点级别。我开始也不相信必须要有仲裁节点,但是自己也试过没仲裁节点的话,主节点挂了备节点还是备节点, 所以咱们还是需要它的。

      介绍完了集群方案,那么现在就开始搭建了。

mongodb版本3.0.4

mongodb参数说明

--quiet     # 安静输出
--port arg  # 指定服务端口号,默认端口27017
--bind_ip arg   # 绑定服务IP,若绑定127.0.0.1,则只能本机访问,不指定默认本地所有IP
--logpath arg   # 指定MongoDB日志文件,注意是指定文件不是目录
--logappend     # 使用追加的方式写日志
--pidfilepath arg   # PID File 的完整路径,如果没有设置,则没有PID文件
--keyFile arg   # 集群的私钥的完整路径,只对于Replica Set 架构有效
--unixSocketPrefix arg  # UNIX域套接字替代目录,(默认为 /tmp)
--fork  # 以守护进程的方式运行MongoDB,创建服务器进程
--auth  # 启用验证
--cpu   # 定期显示CPU的CPU利用率和iowait
--dbpath arg    # 指定数据库路径
--diaglog arg   # diaglog选项 0=off 1=W 2=R 3=both 7=W+some reads
--directoryperdb    # 设置每个数据库将被保存在一个单独的目录
--journal   # 启用日志选项,MongoDB的数据操作将会写入到journal文件夹的文件里
--journalOptions arg    # 启用日志诊断选项
--ipv6  # 启用IPv6选项
--jsonp     # 允许JSONP形式通过HTTP访问(有安全影响)
--maxConns arg  # 最大同时连接数 默认2000
--noauth    # 不启用验证
--nohttpinterface   # 关闭http接口,默认关闭27018端口访问
--noprealloc    # 禁用数据文件预分配(往往影响性能)
--noscripting   # 禁用脚本引擎
--notablescan   # 不允许表扫描
--nounixsocket  # 禁用Unix套接字监听
--nssize arg (=16)  # 设置信数据库.ns文件大小(MB)
--objcheck  # 在收到客户数据,检查的有效性,
--profile arg   # 档案参数 0=off 1=slow, 2=all
--quota     # 限制每个数据库的文件数,设置默认为8
--quotaFiles arg    # number of files allower per db, requires --quota
--rest  # 开启简单的rest API
--repair    # 修复所有数据库run repair on all dbs
--repairpath arg    # 修复库生成的文件的目录,默认为目录名称dbpath
--slowms arg (=100)     # value of slow for profile and console log
--smallfiles    # 使用较小的默认文件
--syncdelay arg (=60)   # 数据写入磁盘的时间秒数(0=never,不推荐)
--sysinfo   # 打印一些诊断系统信息
--upgrade   # 如果需要升级数据库

 

Replicaton 参数
--fastsync  # 从一个dbpath里启用从库复制服务,该dbpath的数据库是主库的快照,可用于快速启用同步
--autoresync    # 如果从库与主库同步数据差得多,自动重新同步,
--oplogSize arg     # 设置oplog的大小(MB)

主/从参数
--master    # 主库模式
--slave     # 从库模式
--source arg    # 从库 端口号
--only arg  # 指定单一的数据库复制
--slavedelay arg    # 设置从库同步主库的延迟时间


Replica set(副本集)选项
--replSet arg   # 设置副本集名称


Sharding(分片)选项
--configsvr     # 声明这是一个集群的config服务,默认端口27019,默认目录/data/configdb
--shardsvr  # 声明这是一个集群的分片,默认端口27018
--noMoveParanoia    # 关闭偏执为moveChunk数据保存

 

1.建立mongodb文件加,在里面新建3个文件夹(master、slave、arbiter)

2.将下载的mongodb安装解压后,在上面三个文件夹里每个放一份

3.在三个文件夹里分别依次建立master.config、slave.config、arbiter.config文件

master.config

dbpath=D:\mongodb\master\data\db
logpath=D:\mongodb\master\data\log\mongodb.log
port = 2222
logappend = true
replSet = zj

slave.config

dbpath=D:\mongodb\slave\data\db
logpath=D:\mongodb\slave\data\log\mongodb.log
port = 3333
logappend = true
replSet = zj

 

arbiter.config

dbpath=D:\mongodb\arbiter\data\db
logpath=D:\mongodb\arbiter\data\log\mongodb.log
port = 4444
logappend = true
replSet = zj

4.新建一个bat文件安装mongodb服务,分别放到三个文件夹中,将标红的地方的名称修改一下

@echo off  
@echo ---------------------welcome to use mongod auto run tools--------------  
@echo. & pause  
@echo ---------------------正在关闭冗余进程,骚等----------------------------  
 
taskkill /im mongod.exe /f  
 
@echo --------------------冗余进程执行完毕,安装服务器正在启动,骚等-------------  

start D:\mongodb\master\bin\mongod.exe --install --logpath=D:\mongodb\master\data\log\mongodb.log --logappend  --dbpath=D:\mongodb\master\data\db  --serviceName "MongoDB2222" --serviceDisplayName "MongoDB2222" --port 2222 --replSet zj

@echo. & pause

5.启动服务安装这三个服务

6.打开dos命令窗口,运行命令 cd D:\mongodb\master\bin,然后运行mongo 192.168.2.129:2222

7.运行命令use zjdb,这是切换到数据库zjdb了

8.输入

config={_id:"zj",members:[
{_id:0,host:"192.168.2.129:2222"},
{_id:1,host:"192.168.2.129:3333"},
{_id:2,host:"192.168.2.129:4444",arbiterOnly:true}
]},接着输入rs.initiate(config)回车;

      最外层的_id表示replica set的名字,members里包含的是所有节点的地址以及优先级。优先级最高的即成为主节点,即这里的192.168.2.129:2222

特别注 意的是,对于仲裁节点,需要有个特别的配置——arbiterOnly:true。这个千万不能少了,不然主备模式就不能生效。

      配置的生效时间根据不同的机器配置会有长有短,配置不错的话基本上十几秒内就能生效,有的配置需要一两分钟。如果生效了,执行rs.status()命令会看到如下信息:

结果说明

“health” : 1, #代表机器正常
“stteStr” : “PRIMARY”, #代表是主节点,可读写,

其中有以下几下状态:

STARTUP:刚加入到复制集中,配置还未加载
STARTUP2:配置已加载完,初始化状态
RECOVERING:正在恢复,不适用读
ARBITER: 仲裁者
DOWN:节点不可到达
UNKNOWN:未获取其他节点状态而不知是什么状态,一般发生在只有两个成员的架构,脑裂
REMOVED:移除复制集
ROLLBACK:数据回滚,在回滚结束时,转移到RECOVERING或SECONDARY状态
FATAL:出错。查看日志grep “replSet FATAL”找出错原因,重新做同步
PRIMARY:主节点
SECONDARY:备份节点

9.设置备份节点可读,使用命令 db.getMongo().setSlaveOk()

posted on   lovezj9012  阅读(687)  评论(0编辑  收藏  举报

努力加载评论中...

导航

点击右上角即可分享
微信分享提示