为什么需要集群

  • 为了让数据安全
  • 高(24* 7)数据可用性
  • 灾难恢复
  • 无停机维护(如备份,索引重建,压实)
  • 读缩放(额外的副本读取)
  • 副本集对应用程序是透明

设置集群

准备工作

在MongoDB的集群是需要奇数个节点才能正常的运行,我们这里设置一个最小的节点的集群:1个主节点和2个从节点

  1. 分别建立三个文件夹来存放MongoDB的三个节点的文件

  2. 设置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--集群的更多相关文章

  1. MongoDB集群卡死问题

    一年前搭了个MongoDB集群,跑得还算不错,但是有几次遇到过服务卡死的问题.处理起来已经得心应手了,拿来跟大家分享一下: 故障现象: 业务查询缓慢,而且会有连接异常: { "serverU ...

  2. mongodb集群安装及到现在遇到的一些问题

    集群搭建 只有3台服务器,开始搭建mongodb集群里主要参照的是http://www.lanceyan.com/tech/arch/mongodb_shard1.html,端口的设置也是mongos ...

  3. 搭建高可用mongodb集群(四)—— 分片(经典)

    转自:http://www.lanceyan.com/tech/arch/mongodb_shard1.html 按照上一节中<搭建高可用mongodb集群(三)-- 深入副本集>搭建后还 ...

  4. [转]搭建高可用mongodb集群(四)—— 分片

    按照上一节中<搭建高可用mongodb集群(三)—— 深入副本集>搭建后还有两个问题没有解决: 从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大? 数据压力大到机器支撑不了的 ...

  5. [转]搭建高可用mongodb集群(二)—— 副本集

    在上一篇文章<搭建高可用MongoDB集群(一)——配置MongoDB> 提到了几个问题还没有解决. 主节点挂了能否自动切换连接?目前需要手工切换. 主节点的读写压力过大如何解决? 从节点 ...

  6. 搭建高可用mongodb集群(四)—— 分片

    按照上一节中<搭建高可用mongodb集群(三)—— 深入副本集>搭建后还有两个问题没有解决: 从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大? 数据压力大到机器支撑不了的 ...

  7. 搭建高可用mongodb集群(三)—— 深入副本集内部机制

    在上一篇文章<搭建高可用mongodb集群(二)—— 副本集> 介绍了副本集的配置,这篇文章深入研究一下副本集的内部机制.还是带着副本集的问题来看吧! 副本集故障转移,主节点是如何选举的? ...

  8. 搭建高可用mongodb集群(二)—— 副本集

    在上一篇文章<搭建高可用MongoDB集群(一)——配置MongoDB> 提到了几个问题还没有解决. 主节点挂了能否自动切换连接?目前需要手工切换. 主节点的读写压力过大如何解决? 从节点 ...

  9. 搭建高可用mongodb集群(一)——配置mongodb

    在大数据的时代,传统的关系型数据库要能更高的服务必须要解决高并发读写.海量数据高效存储.高可扩展性和高可用性这些难题.不过就是因为这些问题Nosql诞生了. NOSQL有这些优势: 大数据量,可以通过 ...

  10. MongoDB集群架构及搭建

    MongoDB分布式集群 MongDB分布式集群能够对数据进行备份,提高数据安全性,以及提高集群提高读写服务的能力和数据存储能力.主要通过副本集(replica)对数据进行备份,通过分片(shardi ...

随机推荐

  1. Keil MDK忽略警告:文件末尾空白行警告

    使用Keil MDK调试程序的时候,没有习惯在每个文件的末尾增加一个空白行,结果文件一多,编译时产生的警告就一大堆,排错都得用滚轮滚好久,就一个空白行还得出警告,烦死了,烦死了,烦死了!实在受不了了, ...

  2. Hibernate5.4的环境搭建

    (1)项目中添加Hibernate依赖 <dependency> <groupId>org.hibernate</groupId> <artifactId&g ...

  3. CentOS挂载光盘

    mkdir /mnt/cdrom mount /dev/cdrom /mnt/cdrom umount /dev/cdrom /mnt/cdrom 在Ambari集群中配置192.168.0.210: ...

  4. k64 datasheet学习笔记3---Chip Configuration之Clock modules

    1.前言 本文主要讲述chip configure之clock配置相关的内容,主要包含如下三个部分: MCG configuration:Multipurpose clock generator OS ...

  5. ioremap 与 mmap【转】

    转自:http://blog.csdn.net/junllee/article/details/7415732 内存映射 对于提供了MMU(存储管理器,辅助操作系统进行内存管理,提供虚实地址转换等硬件 ...

  6. python脚本发送邮件

    #!/usr/bin/python #_*_ coding:utf-8 _*_ from email.MIMEText import MIMEText from email.MIMEMultipart ...

  7. sqlserver2008 链接服务器 2000

    背景 这个项目就有意思了,我用的是sqlserver2008,对方用的是sqlserver2000,还装在windows2000上,是个很老的系统了.两方要对接,对方技术太菜,自己竟然不会转2000. ...

  8. 基于Jenkins,docker实现自动化部署(持续交互)【转】

      前言 随着业务的增长,需求也开始增多,每个需求的大小,开发周期,发布时间都不一致.基于微服务的系统架构,功能的叠加,对应的服务的数量也在增加,大小功能的快速迭代,更加要求部署的快速化,智能化.因此 ...

  9. vue系列之webpack

    webpack 地址: https://github.com/vuejs-templates/webpack 注意里面的template,用webpack创建的项目,结构就是这样的

  10. Hibernate 常用jar包 分析

    antlr-2.7.6.jar的作用 ANTLR (ANother Tool for Language Recognition) 是一个PCCTS制定的语言工具,它为他创建认定者,程序编译者,翻译者提 ...