MongoDB系列—— Window 搭建Mongodb 集群
Mongodb的集群方式的搭建有三种:Replica Set / Sharding / Master-Slaver。这里只说明最简单的集群搭建方式(Replica Set)
Replica Set
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 2016-11-10 15:39 lovezj9012 阅读(687) 评论(0) 编辑 收藏 举报
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步