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 ...
随机推荐
- ditto复制增强
1.下载 http://ditto-cp.sourceforge.net/ 2.用法 ctrl+` ctrl+数字 或者 ctrl +` 然后用鼠标选择 soeasy
- python学习笔记:"爬虫+有道词典"实现一个简单的英译汉程序
1.有道的翻译 网页:www.youdao.com Fig1 Fig2 Fig3 Fig4 再次点击"自动翻译"->选中'Network'->选中'第一项',如下: F ...
- SpringBoot整合Email(电子邮件服务)
(1).导入starter依赖 <dependency> <groupId>org.springframework.boot</groupId> <artif ...
- 根据txt中的文件名将文件复制到目标文件夹中
功能如标题,之所以这么做是有的时候文件数目较多,一个一个复制太复杂了,代码如下: # -*- coding:utf-8 -*- #2018_03_18 #实现功能:根据文件名字将对应的文件复制到目标地 ...
- 笔记软件 notion
笔记软件 notion : https://www.notion.so 注册:zengxinle@126.com 团队:Hopesun
- Python3学习笔记18-访问限制
在Class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的复杂逻辑. 但是,从Student类的定义来看,外部代码还是可以自由地修改一个实例的name ...
- centos7 部署 docker ce
=============================================== 2019/4/9_第1次修改 ccb_warlock === ...
- SonarQube代码质量管理工具的升级(sonarqube6.2 + sonar-scanner-2.8 + MySQL5.6+)
SonarQube升级注意事项 0. 前提条件 如果之前是使用sonarqube5.2 + sonar-runner-2.4 +MySQL5.5版本或者类似的组合. 安装方法请参照SonarQube代 ...
- Android动画之逐帧动画(FrameAnimation)详解
今天我们就来学习逐帧动画,废话少说直接上效果图如下: 帧动画的实现方式有两种: 一.在res/drawable文件夹下新建animation-list的XML实现帧动画 1.首先在res/drawab ...
- ios 侧边手势滑动返回 禁用/开启 功能
// 禁用 返回手势 if ([self.navigationController respondsToSelector:@selector(interactivePopGestureR ...