MongoDB--集群
为什么需要集群
- 为了让数据安全
- 高(24* 7)数据可用性
- 灾难恢复
- 无停机维护(如备份,索引重建,压实)
- 读缩放(额外的副本读取)
- 副本集对应用程序是透明
设置集群
准备工作
在MongoDB的集群是需要奇数个节点才能正常的运行,我们这里设置一个最小的节点的集群:1个主节点和2个从节点
- 分别建立三个文件夹来存放MongoDB的三个节点的文件 
   
- 设置mongod.cfg文件 - systemLog:
 destination: file
 path: D:\Program Files\MongoDB\Server\3.0\0\log\mongod.log
 storage:
 dbPath: D:\Program Files\MongoDB\Server\3.0\0\blogDB
 #网络
 net:
 port: 27017
 # bindIp: 127.0.0.1,192.168.1.106 #默认是全部IP
 #授权
 security:
 authorization: disabled
 # keyFile: D:\Program Files\MongoDB\Server\3.0\rsKey #用于集群的验证,建议使用ssl,我为了简单,rsKey只是一个普通的文本
 #集群
 replication:
 replSetName: rs0 #集群名
 
三个节点的配置除了端口和路径需要改改,其他基本一致,我的三个节点的端口分别为:27017,27018,27019
启动集群
分别启动三个MongoDB实例,具体怎么启动,请参考我的MongoDB——基础入门
配置集群
C:\Users\Tengit>mongo
MongoDB shell version: 3.0.6
connecting to: test
> rs.initiate()
{
		"info2" : "no configuration explicitly specified -- making one",
		"me" : "tengit-2:27017",
		"ok" : 1
}
rs0:PRIMARY> rs.add("tengit-2:27018")
{ "ok" : 1 }
rs0:PRIMARY> rs.add("tengit-2:27019")
{ "ok" : 1 }
rs0:PRIMARY> rs.status()
{
		"set" : "rs0",
		"date" : ISODate("2015-10-14T02:51:00.788Z"),
		"myState" : 1,
		"members" : [
				{
						"_id" : 0,
						"name" : "tengit-2:27017",
						"health" : 1,
						"state" : 1,
						"stateStr" : "PRIMARY",
						"uptime" : 122,
						"optime" : Timestamp(1444791053, 1),
						"optimeDate" : ISODate("2015-10-14T02:50:53Z"),
						"electionTime" : Timestamp(1444790978, 2),
						"electionDate" : ISODate("2015-10-14T02:49:38Z"),
						"configVersion" : 3,
						"self" : true
				},
				{
						"_id" : 1,
						"name" : "tengit-2:27018",
						"health" : 1,
						"state" : 2,
						"stateStr" : "SECONDARY",
						"uptime" : 32,
						"optime" : Timestamp(1444791053, 1),
						"optimeDate" : ISODate("2015-10-14T02:50:53Z"),
						"lastHeartbeat" : ISODate("2015-10-14T02:50:59.873Z"),
						"lastHeartbeatRecv" : ISODate("2015-10-14T02:51:00.118Z"
),
						"pingMs" : 0,
						"syncingTo" : "tengit-2:27017",
						"configVersion" : 3
				},
				{
						"_id" : 2,
						"name" : "tengit-2:27019",
						"health" : 1,
						"state" : 5,
						"stateStr" : "STARTUP2",
						"uptime" : 6,
						"optime" : Timestamp(0, 0),
						"optimeDate" : ISODate("1970-01-01T00:00:00Z"),
						"lastHeartbeat" : ISODate("2015-10-14T02:50:59.871Z"),
						"lastHeartbeatRecv" : ISODate("2015-10-14T02:51:00.138Z"
),
						"pingMs" : 0,
						"configVersion" : 3
				}
		],
		"ok" : 1
}
rs0:PRIMARY> rs.status()
{
		"set" : "rs0",
		"date" : ISODate("2015-10-14T02:51:50.492Z"),
		"myState" : 1,
		"members" : [
				{
						"_id" : 0,
						"name" : "tengit-2:27017",
						"health" : 1,
						"state" : 1,
						"stateStr" : "PRIMARY",
						"uptime" : 172,
						"optime" : Timestamp(1444791053, 1),
						"optimeDate" : ISODate("2015-10-14T02:50:53Z"),
						"electionTime" : Timestamp(1444790978, 2),
						"electionDate" : ISODate("2015-10-14T02:49:38Z"),
						"configVersion" : 3,
						"self" : true
				},
				{
						"_id" : 1,
						"name" : "tengit-2:27018",
						"health" : 1,
						"state" : 2,
						"stateStr" : "SECONDARY",
						"uptime" : 82,
						"optime" : Timestamp(1444791053, 1),
						"optimeDate" : ISODate("2015-10-14T02:50:53Z"),
						"lastHeartbeat" : ISODate("2015-10-14T02:51:49.886Z"),
						"lastHeartbeatRecv" : ISODate("2015-10-14T02:51:50.125Z"
),
						"pingMs" : 0,
						"syncingTo" : "tengit-2:27017",
						"configVersion" : 3
				},
				{
						"_id" : 2,
						"name" : "tengit-2:27019",
						"health" : 1,
						"state" : 2,
						"stateStr" : "SECONDARY",
						"uptime" : 56,
						"optime" : Timestamp(1444791053, 1),
						"optimeDate" : ISODate("2015-10-14T02:50:53Z"),
						"lastHeartbeat" : ISODate("2015-10-14T02:51:49.886Z"),
						"lastHeartbeatRecv" : ISODate("2015-10-14T02:51:50.150Z"
),
						"pingMs" : 0,
						"configVersion" : 3
				}
		],
		"ok" : 1
}
rs0:PRIMARY>
附带一份C#访问MongoDB的测试程序,点击下载
MongoDB--集群的更多相关文章
- MongoDB集群卡死问题
		一年前搭了个MongoDB集群,跑得还算不错,但是有几次遇到过服务卡死的问题.处理起来已经得心应手了,拿来跟大家分享一下: 故障现象: 业务查询缓慢,而且会有连接异常: { "serverU ... 
- mongodb集群安装及到现在遇到的一些问题
		集群搭建 只有3台服务器,开始搭建mongodb集群里主要参照的是http://www.lanceyan.com/tech/arch/mongodb_shard1.html,端口的设置也是mongos ... 
- 搭建高可用mongodb集群(四)—— 分片(经典)
		转自:http://www.lanceyan.com/tech/arch/mongodb_shard1.html 按照上一节中<搭建高可用mongodb集群(三)-- 深入副本集>搭建后还 ... 
- [转]搭建高可用mongodb集群(四)—— 分片
		按照上一节中<搭建高可用mongodb集群(三)—— 深入副本集>搭建后还有两个问题没有解决: 从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大? 数据压力大到机器支撑不了的 ... 
- [转]搭建高可用mongodb集群(二)—— 副本集
		在上一篇文章<搭建高可用MongoDB集群(一)——配置MongoDB> 提到了几个问题还没有解决. 主节点挂了能否自动切换连接?目前需要手工切换. 主节点的读写压力过大如何解决? 从节点 ... 
- 搭建高可用mongodb集群(四)—— 分片
		按照上一节中<搭建高可用mongodb集群(三)—— 深入副本集>搭建后还有两个问题没有解决: 从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大? 数据压力大到机器支撑不了的 ... 
- 搭建高可用mongodb集群(三)—— 深入副本集内部机制
		在上一篇文章<搭建高可用mongodb集群(二)—— 副本集> 介绍了副本集的配置,这篇文章深入研究一下副本集的内部机制.还是带着副本集的问题来看吧! 副本集故障转移,主节点是如何选举的? ... 
- 搭建高可用mongodb集群(二)—— 副本集
		在上一篇文章<搭建高可用MongoDB集群(一)——配置MongoDB> 提到了几个问题还没有解决. 主节点挂了能否自动切换连接?目前需要手工切换. 主节点的读写压力过大如何解决? 从节点 ... 
- 搭建高可用mongodb集群(一)——配置mongodb
		在大数据的时代,传统的关系型数据库要能更高的服务必须要解决高并发读写.海量数据高效存储.高可扩展性和高可用性这些难题.不过就是因为这些问题Nosql诞生了. NOSQL有这些优势: 大数据量,可以通过 ... 
- MongoDB集群架构及搭建
		MongoDB分布式集群 MongDB分布式集群能够对数据进行备份,提高数据安全性,以及提高集群提高读写服务的能力和数据存储能力.主要通过副本集(replica)对数据进行备份,通过分片(shardi ... 
随机推荐
- 【CXF】: No binding operation info while invoking unknown method with params unknown.
			CXF发布webservice之后访问报错: org.apache.cxf.interceptor.Fault: No binding operation info while invoking un ... 
- Dom4j解析xml内容——(三)
			Dom4j取标签中的内容用 getText ,取开始标签和结束标签之间的值. 取属性值有两种方式: 
- java多线程系列五、并发容器
			一.ConcurrentHashMap 1.为什么要使用ConcurrentHashMap 在多线程环境下,使用HashMap进行put操作会引起死循环,导致CPU利用率接近100%,HashMap在 ... 
- 如何在windows上调试安卓机谷歌浏览器上的页面
			- 下面的方法仅在windows和安卓机上测试过,,,, - 手机(安卓机)需要安装chrome与电脑(Windows)上的chrome配合,也就是只能调试谷歌浏览器上的页面 1.手机的准备工作 打开 ... 
- python获取当前环境的编码
			# coding:gbk import sys import locale def p(f): print '%s.%s(): %s' % (f.__module__, f.__name__, f() ... 
- 队列queue 代码
			import queue q=queue.Queue(3) #队列:先进先出 q.put(1) q.put(2) q.put(3) q.put(4) print(q.get()) print(q.ge ... 
- 深度学习Bible学习笔记:第一章 前言
			写在前面:请务必踏踏实实看书,结合笔记或视频来理解学习,任何技术,啃砖头是最扎实最系统的,为避免知识碎片化,切忌抛却书本的学习!!! 一 什么是深度学习 1 关于AI: AI系统必须具备从原始数据提取 ... 
- MACE(1)-----环境搭建
			作者:十岁的小男孩 QQ:929994365 无为 本文仅用于学习研究,非商业用途,欢迎大家指出错误一起学习,文章内容翻译自 MACE 官方手册,记录本人阅读与开发过程,力求不失原意,但推荐阅读原文. ... 
- hdu1890 splay维护区间翻转
			这题的建模有点不太一样,是按结点横坐标赋予键值的 同时每次rotate和splay时都要注意下往上往下更新 /* 先建立好splay tree,将结点按num/输入顺序排序,遍历时每次将当前结点提到根 ... 
- MVCJSONJQuery分页实现
			思路: 1.用Ado.NET获取数据 2.控制器中创建一个方法参数为搜索条件 3.返回前台一个Json对象,把对象用一个类封装 4.用JQuery接收数据 public ActionResult In ... 
