搭建副本集

1:首先创建3台虚拟机作为配置环境

IP1:192.168.101.175

IP2:192.168.101.176

IP3:192.168.101.177

2.下载MongoDB 3.4版本,没有的文件或者文件夹请自行创建。

3.编辑配置文件E:\mongodb-3.4\conf\mongo.conf

IP1:192.168.101.177

#数据库数据存放目录
dbpath=E:\mongodb-3.4\data
#数据库日志存放目录
logpath=E:\mongodb-3.4\log\MongoDB.log
#以追加的方式记录日志
logappend=true
#启用日志文件,默认启用
journal=true
#端口号 默认为27017
port=27017
#副本集名称
replSet=rs1/192.168.101.176:27017

IP2:192.168.101.176

#数据库数据存放目录
dbpath=E:\mongodb-3.4\data
#数据库日志存放目录
logpath=E:\mongodb-3.4\log\MongoDB.log
#以追加的方式记录日志
logappend=true
#启用日志文件,默认启用
journal=true
#端口号 默认为27017
port=27017
#副本集名称
replSet=rs1/192.168.101.177:27017

IP3:192.168.101.175

#数据库数据存放目录
dbpath=E:\mongodb-3.4\data
#数据库日志存放目录
logpath=E:\mongodb-3.4\log\MongoDB.log
#以追加的方式记录日志
logappend=true
#启用日志文件,默认启用
journal=true
#端口号 默认为27017
port=27017
#副本集名称
replSet=rs1/192.168.101.176:27017,192.168.101.177:27017

 4.添加Windows服务

cmd命令切换到目录E:\mongodb-3.4\bin

输入以下命令

mongod --install -f  E:\mongodb-3.4\conf\mongo.conf

启动MongoDB服务:net start MongoDB

停止MongoDB服务:net stop MongoDB

删除MongoDB服务:sc delete MongoDB

5.重启服务

依次重启192.168.101.177、192.168.101.176、192.168.101.175服务

6.搭建副本集

在IP1:192.168.101.177上启动mongod

#使用admin数据库
use admin
#定义副本集配置
config = { _id:"rs1",
members:[
{_id:0,host:"192.168.101.177:27017"},
{_id:1,host:"192.168.101.176:27017"},
{_id:2,host:"192.168.101.175:27017"}
]
} #初始化副本集配置
rs.initiate(config)

7.验证配置的副本集rs.status()

{
"set" : "rs1",
"date" : ISODate("2018-02-01T08:12:43.079Z"),
"myState" : 1,
"term" : NumberLong(1),
"heartbeatIntervalMillis" : NumberLong(2000),
"optimes" : {
"lastCommittedOpTime" : {
"ts" : Timestamp(1517472756, 1),
"t" : NumberLong(1)
},
"appliedOpTime" : {
"ts" : Timestamp(1517472756, 1),
"t" : NumberLong(1)
},
"durableOpTime" : {
"ts" : Timestamp(1517472756, 1),
"t" : NumberLong(1)
}
},
"members" : [
{
"_id" : 0,
"name" : "192.168.101.177:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 714,
"optime" : {
"ts" : Timestamp(1517472756, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2018-02-01T08:12:36Z"),
"electionTime" : Timestamp(1517472425, 1),
"electionDate" : ISODate("2018-02-01T08:07:05Z"),
"configVersion" : 1,
"self" : true
},
{
"_id" : 1,
"name" : "192.168.101.176:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 348,
"optime" : {
"ts" : Timestamp(1517472756, 1),
"t" : NumberLong(1)
},
"optimeDurable" : {
"ts" : Timestamp(1517472756, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2018-02-01T08:12:36Z"),
"optimeDurableDate" : ISODate("2018-02-01T08:12:36Z"),
"lastHeartbeat" : ISODate("2018-02-01T08:12:42.251Z"),
"lastHeartbeatRecv" : ISODate("2018-02-01T08:12:42.537Z"
),
"pingMs" : NumberLong(1),
"syncingTo" : "192.168.101.177:27017",
"configVersion" : 1
},
{
"_id" : 2,
"name" : "192.168.101.175:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 348,
"optime" : {
"ts" : Timestamp(1517472756, 1),
"t" : NumberLong(1)
},
"optimeDurable" : {
"ts" : Timestamp(1517472756, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2018-02-01T08:12:36Z"),
"optimeDurableDate" : ISODate("2018-02-01T08:12:36Z"),
"lastHeartbeat" : ISODate("2018-02-01T08:12:42.270Z"),
"lastHeartbeatRecv" : ISODate("2018-02-01T08:12:42.634Z"
),
"pingMs" : NumberLong(1),
"syncingTo" : "192.168.101.177:27017",
"configVersion" : 1
}
],
"ok" : 1
}

 8.在192.168.101.177(Primary)上读写数据

db.users.insert({_id:1,name:"mf",age:24})

9.检查副本集数据同步情况

模拟primary节点宕机的情况

可以看到**已经成了primary节点。主界面宕机导致了整个集群发生一次election,实现了failover。等**恢复了会自动成为secondary节点:

修改配置

可以随时修改副本集的配置:添加、删除、修改已有的成员。很多常用的操作都有对应的shell函数。

rs.add("host:port") => 添加一个节点

rs.remove("host:port") => 删除成员

rs.config() => 查看副本集配置

rs.reconfig(config) => 根据config配置对象,重新配置副本集

注意:重新配置副本集时, 主节点会先退化为备份节点, 以便接受新的配置。然后会恢复。这段时间,副本集中可能没有主节点,之后会恢复

连接复本集的正确姿势

引用命名空间: MongoDB.Driver.dll
MongoDB.Bson.dll
MongoClientSettings set = new MongoClientSettings();
List<MongoServerAddress> servers = new List<MongoServerAddress>();
servers.Add(new MongoServerAddress("192.168.101.175", ));
servers.Add(new MongoServerAddress("192.168.101.176", ));
servers.Add(new MongoServerAddress("192.168.101.177", ));
set.Servers = servers; //设置副本集名称
set.ReplicaSetName = "rs1";
//设置超时时间为3秒
set.ConnectTimeout = new TimeSpan(, , , , ); MongoClient client = new MongoClient(set);
MongoServer server = client.GetServer();
MongoDatabase db = server.GetDatabase("test");
MongoCollection coll = db.GetCollection("test"); //插入
BsonDocument bd = new BsonDocument();
bd.Add("name", "zhanjindong");
bd.Add("age", );
bd.Add("sex", "男D"); coll.Insert(bd); //读取
QueryDocument qd = new QueryDocument();
qd.Add("name", "zhanjindong");
qd.Add("age", );
qd.Add("sex", "男D"); BsonDocument rd = coll.FindOneAs<BsonDocument>(qd); Console.WriteLine(rd.ToString());

MongoDB-3.4搭建副本集的更多相关文章

  1. MongoDB集群搭建-副本集

    MongoDB集群搭建-副本集 概念性的知识,可以参考本人博客地址: 一.Master-Slave方案: 主从: 二.Replica Set方案: 副本集: 步骤:(只要按步骤操作,100%成功) 1 ...

  2. MongoDB(五)-- 副本集(replica Set)

    一.副本集介绍 搭建副本集是为了实现mongodb高可用. Mongodb(M)表示主节点,Mongodb(S)表示备节点,Mongodb(A)表示仲裁节点.主备节点存储数据,仲裁节点不存储数据.客户 ...

  3. MongoDB Sharding(二) -- 搭建分片集群

    在上一篇文章中,我们基本了解了分片的概念,本文将着手实践,进行分片集群的搭建 首先我们再来了解一下分片集群的架构,分片集群由三部分构成: mongos:查询路由,在客户端程序和分片之间提供接口.本次实 ...

  4. MongoDB 删除,添加副本集,并修改副本集IP等信息

    MongoDB 删除,添加副本集,并修改副本集IP等信息 添加副本,在登录到主节点下输入 rs.add("ip:port"); 删除副本 rs.remove("ip:po ...

  5. MongoDB 带访问控制的副本集部署

    当你需要用到一个MongoDB 副本集集群,用于开发测试时, 可以通过下面的步骤简单完成. 版本及环境 MongoDB4.4  Centos6.5  一. 下载安装 MongoDB Server 及 ...

  6. 8.MongoDB系列之创建副本集(一)

    1. 复制简介 在MongoDB中,创建副本集后就可以使用复制功能了,副本集是一组服务器,其中一个是用于处理写操作的主节点,还有多个用于保存主节点的数据副本的从节点,如果主节点崩溃了,则从节点会从中选 ...

  7. MongoDB 副本集搭建 & 副本集扩容

    副本集的搭建 创建多实例目录 [root@redis03 ~]# mkdir /server/mongodb/2801{7,8,9}/{conf,logs,pid,data} -p 编辑多实例配置文件 ...

  8. MongoDB 搭建副本集

    副本集(Replica Set)是一组MongoDB实例组成的集群,由一个主(Primary)服务器和多个备份(Secondary)服务器构成.通过Replication,将数据的更新由Primary ...

  9. mongodb带认证的副本集搭建

    Mongodb副本集带用户认证的 概述 本次实验是在一台虚拟机上做的,正式环境一定要分开实现,以免影响服务的正常使用和性能. 准备工作: 操作系统:centos7.2 Mongodb版本:3.4.1 ...

随机推荐

  1. 使用pyspark模仿sqoop从oracle导数据到hive的主要功能(自动建表,分区导入,增量,解决数据换行符问题)

    最近公司开始做大数据项目,让我使用sqoop(1.6.4版本)导数据进行数据分析计算,然而当我们将所有的工作流都放到azkaban上时整个流程跑完需要花费13分钟,而其中导数据(增量)就占了4分钟左右 ...

  2. idou老师教你学Istio 17 : 通过HTTPS进行双向TLS传输

    众所周知,HTTPS是用来解决 HTTP 明文协议的缺陷,在 HTTP 的基础上加入 SSL/TLS 协议,依靠 SSL 证书来验证服务器的身份,为客户端和服务器端之间建立“SSL”通道,确保数据运输 ...

  3. python类属性在继承中的修改的影响

    class A(object): x = 1 class B(A): pass class C(A): pass # 通过父类修改类属性,子类继承的类属性也改变 A.x = 3 print(A.x, ...

  4. Redis学习01_redis安装部署(centos)

    原文: http://www.cnblogs.com/herblog/p/9305668.html Redis学习(一):CentOS下redis安装和部署 1.基础知识  redis是用C语言开发的 ...

  5. 11.5 Daily Scrum

    请把现在当成11月5日······   Today's tasks  Tomorrow's tasks 丁辛 餐厅列表数据结构设计 餐厅列表UI设计             李承晗           ...

  6. Day Five

    站立式会议 站立式会议内容总结 442 今天:编写具体计划的界面 遇到的问题:相对布局.绝对布局理解不够深刻 明天:完成设定计划时间的功能 331 今天:添加书籍/计划按钮,添加书籍时有一个文件选择 ...

  7. 作业三(下)安装VS2013

    VS2013 今天常识安装Microsoft Visual Studio 2013,虽然 直接在软件管家上下载,一键安装,但是还是遇到许多问题,安装过程相当的艰难,花了好多时间.但是在尝试多次后成功的 ...

  8. Visual Studio 2015的安装和简单的测试

    首先是Visual Studio 2015的安装 Visual Studio是微软开发的一套基于组件的软件开发工具,目前最新的版本是2015. 在 I Tell you 网站下载Visual Stud ...

  9. 【Leetcode】378. Kth Smallest Element in a Sorted Matrix

    Question: Given a n x n matrix where each of the rows and columns are sorted in ascending order, fin ...

  10. css实现table中td单元格鼠标悬浮时显示更多内容

    table中,td单元格无法显示下全部内容,需要在鼠标hover时显示全部内容. 正常显示样式: 鼠标hover时: html: <td>displayAddress<span cl ...