为什么需要集群

  • 为了让数据安全
  • 高(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. ODPS

    ODPS 功能之概述篇 原文  http://blog.aliyun.com/2962 主题 SQL 概述 ODPS是阿里云基于自有的云计算技术研发一套开放数据处理服务(Open Data Proce ...

  2. Jetson tk1 hash sum mismatch

    sudo apt-get update遭遇Hash Sum Mismatch 修改DNS服务器地址: sudo gedit /etc/resolv.conf 解决办法: 在装有goagent的情况下: ...

  3. springboot学习笔记-6 springboot整合RabbitMQ

    一 RabbitMQ的介绍 RabbitMQ是消息中间件的一种,消息中间件即分布式系统中完成消息的发送和接收的基础软件.这些软件有很多,包括ActiveMQ(apache公司的),RocketMQ(阿 ...

  4. matplotlib 画图

    matplotlib 画图 1. 画曲线图       Tompson = np.array([0, 0, 0, 0, 0.011, 0.051, 0.15, 0.251, 0.35, 0.44, 0 ...

  5. mono修改配置

    当前mono安装目录为:/home/mono,安装成功后修改配置需进入这个路径: cd /home/mono 1.修改TcpBinaryFrameManager.cs文件 cd /home/mono/ ...

  6. 【转】snprintf()函数使用方法

    众所周知,sprintf不能检查目标字符串的长度,可能造成众多安全问题,所以都会推荐使用snprintf. 注:sprintf()函数:int sprintf( char *buffer, const ...

  7. 使用paramiko远程登录并执行命令脚本

    #!/usr/bin/env python #coding=utf-8 import paramiko, getpass,sys,traceback class ssh_utils(): def lo ...

  8. GBDT学习

    白话GBDT: https://blog.csdn.net/qq_26598445/article/details/80853873 优点: 预测精度高 适合低维数据 能处理非线性数据,该版本GBDT ...

  9. FineReport——获取控件值和单元格值

    设置单元格的值(填报预览): //contentPane.setCellValue(1,0,"abc");//参数面板给单元格赋实际值,即可填报 contentPane.curLG ...

  10. 设置滚动条scrolltop

    scrolltop用来设置页面的滚动条的位置 兼容性:链接 $().scrolltop(值)