搭建副本集

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. aiohttp简介及快速使用

    前言 本文翻译自aiohttp官方文档,如有纰漏,欢迎指出. aiohttp是一个为Python提供异步HTTP 客户端/服务端编程,基于asyncio(Python用于支持异步编程的标准库)的异步库 ...

  2. Python3 str去除空格

    一.去除str两端空格(strip()) a.去除左端空格  lstrip() str0='abcdef' str1=' abcdef' print(str0) print(str1.lstrip() ...

  3. cocos2dx内存优化

    纹理消耗了大量内存 在大部分情况下,是纹理(textures)消耗了游戏程序大量的内存.因此,纹理是我们首要考虑优化的对象 纹理加载 cocos2d里面纹理加载分为两个阶段:从图片文件中创建一个Ima ...

  4. 金蝶盘点机PDA仓库条码管理家电类序列号扫描操作方法-采购入库单

    1.1.  采购入库单 传统的进销存管理软件需要人工识别商品品种,清点商品数量,然后再去人工手工在电脑上一行行的录入采购入库单.录单效率低,误差大. 如果使用汉码盘点机PDA,入库时,仓管员只需要手持 ...

  5. 如何在一个电脑上同时使用两个Git的账号

    前言 又需要登录公司的账号,又想在电脑上使用自己的账号. 实现 首先是git config方面的设置,要取消掉原本对于git账号的全局设置. git config --global --unset u ...

  6. (第三周)使用visual studio 2015进行单元测试

    Microsoft visual studio是目前最流行的windows平台应用程序的集成开发环境.最新版本为 Visual Studio 2015 .Visual Studio 2015 包含许多 ...

  7. C#(近期目标)

    最近很多同学为了实习都在学Java,但是我个人更偏好C#,首先因为自己基础不是太好,而C#又更容易入门,拥有比较完善的开发环境,是微软开发出来的语言.它吸收了C++和Java两门语言的所有有点,因为它 ...

  8. cdq分治解决三维偏序

    问题背景 在三维坐标系中有n个点,坐标为(xi,yi,zi). 定义一个点A比一个点B小,当且仅当xA<=xB,yA<=yB,zA<=zB.问对于每个点,有多少个点比它小.(n< ...

  9. Visual Studio(VS)C++单元测试

    版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:Visual Studio(VS)C++单元测试     本文地址:http://techie ...

  10. SqlServer测试SQL语句执行效率

    方法一: SET STATISTICS io ON SET STATISTICS time ON go ---需要测试的sql语句 go SET STATISTICS profile OFF SET ...