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 ...
随机推荐
- COM口总是有惊叹号怎么办
现在用win8或者win8.1的人越来越多,搞开发的COM口是离不开的我们用转串口芯片时总会出现COM口有惊叹号的情况,这样我们的设备是无法正常使用的,那要怎么办呢? 方法: 想改成上图这样没有惊叹号 ...
- GCC选项_-Wl,-soname 及 DT_NEEDED 的解释
-Wl选项告诉编译器将后面的参数传递给链接器. -soname则指定了动态库的soname(简单共享名,Short for shared object name) soname的关键功能是它提供了兼容 ...
- 转载:(Mac)在bash和zsh配置环境变量path的几种方法
参考文献 老习惯,列出本文参考或引用或转载的文档和博客,致以崇高的敬意,感兴趣的可以去看看 1.http://postgresapp.com/ 2.http://postgresapp.com/doc ...
- ActiveMQ 入门Nodejs版
ActiveMQ 入门下载与安装 官方下载地址 解压,运行bin/win[32|64]/activemq[.bat] 启动服务 环境信息 控制台: http://localhost:8161 默认端口 ...
- FreeSWITCH Git版本管理
由于测试FreeSWITCH不同版本的需要,研究了下Git的使用,通过Git来管理所有的版本,方便了测试.以下就总结下具体的使用方法: 其中:git clone ..是现在git仓库:git tag ...
- 转载:2.1 运行中的Nginx进程间的关系《深入理解Nginx》(陶辉)
原文:https://book.2cto.com/201304/19624.html 在正式提供服务的产品环境下,部署Nginx时都是使用一个master进程来管理多个worker进程,一般情况下,w ...
- JS排序算法之快速排序
const Arr = [85, 24, 63, 45, 17, 31, 96, 50]; function quickSort(arr) { 80 if (arr.length <= 1) { ...
- JavaScript对象简介(一)
本节介绍js的9个对象:Array数组对象 Boolean(true false) Date日前对象 Math 数学对象 Number 数字对象 String 字符串对象 RegExp 正则表达式对象 ...
- XHR简介
在XHR诞生前,网页要获取客户端和服务器的任何状态更新,都需要刷新一次,在XHR诞生后就可以完全通过JS代码异步实现这一过程.XHR的诞生也使最初的网页制作转换为开发交互应用,拉开了WEB2.0的序幕 ...
- C++ code:剩余串排列
方法一: 一种直观的解是,先对第一个字串排序,然后逐个字符在第二个字串中搜索,把搜索不到的字符输出,就是所要的结果. 然而,算法库中有一个集合差运算set_difference,而且要求两个集合容器是 ...