MongoDB-3.4搭建副本集
搭建副本集
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搭建副本集的更多相关文章
- MongoDB集群搭建-副本集
MongoDB集群搭建-副本集 概念性的知识,可以参考本人博客地址: 一.Master-Slave方案: 主从: 二.Replica Set方案: 副本集: 步骤:(只要按步骤操作,100%成功) 1 ...
- MongoDB(五)-- 副本集(replica Set)
一.副本集介绍 搭建副本集是为了实现mongodb高可用. Mongodb(M)表示主节点,Mongodb(S)表示备节点,Mongodb(A)表示仲裁节点.主备节点存储数据,仲裁节点不存储数据.客户 ...
- MongoDB Sharding(二) -- 搭建分片集群
在上一篇文章中,我们基本了解了分片的概念,本文将着手实践,进行分片集群的搭建 首先我们再来了解一下分片集群的架构,分片集群由三部分构成: mongos:查询路由,在客户端程序和分片之间提供接口.本次实 ...
- MongoDB 删除,添加副本集,并修改副本集IP等信息
MongoDB 删除,添加副本集,并修改副本集IP等信息 添加副本,在登录到主节点下输入 rs.add("ip:port"); 删除副本 rs.remove("ip:po ...
- MongoDB 带访问控制的副本集部署
当你需要用到一个MongoDB 副本集集群,用于开发测试时, 可以通过下面的步骤简单完成. 版本及环境 MongoDB4.4 Centos6.5 一. 下载安装 MongoDB Server 及 ...
- 8.MongoDB系列之创建副本集(一)
1. 复制简介 在MongoDB中,创建副本集后就可以使用复制功能了,副本集是一组服务器,其中一个是用于处理写操作的主节点,还有多个用于保存主节点的数据副本的从节点,如果主节点崩溃了,则从节点会从中选 ...
- MongoDB 副本集搭建 & 副本集扩容
副本集的搭建 创建多实例目录 [root@redis03 ~]# mkdir /server/mongodb/2801{7,8,9}/{conf,logs,pid,data} -p 编辑多实例配置文件 ...
- MongoDB 搭建副本集
副本集(Replica Set)是一组MongoDB实例组成的集群,由一个主(Primary)服务器和多个备份(Secondary)服务器构成.通过Replication,将数据的更新由Primary ...
- mongodb带认证的副本集搭建
Mongodb副本集带用户认证的 概述 本次实验是在一台虚拟机上做的,正式环境一定要分开实现,以免影响服务的正常使用和性能. 准备工作: 操作系统:centos7.2 Mongodb版本:3.4.1 ...
随机推荐
- HTML 背景实例
71.HTML 背景实例好的背景使站点看上去特别棒.背景(Backgrounds)<body> 拥有两个配置背景的标签.背景可以是颜色或者图像.<body> 标签中的背景颜色( ...
- Jupyter Notebook 工作空间 / 默认路径 的设置方式
Jupyter notebook 安装后,启动后,默认的工作空间是当前用户目录.为了方便对文档进行管理,往往需要自行设置工作空间. 下面介绍两种亲试有效的工作空间设置方法. 1.修改快捷方式 对 Ju ...
- win10 添加项目右键用vscode打开
1.新建reg文件:在vscode安装目录下新建一个文本文件,然后将文件后缀改为:*.reg,文件名任意,例如:vsCodeOpenFolder.reg. 2.编写文本文件内容.将下面的内容Copy到 ...
- VMware在Centos7上配置静态IP的方法
使用NAT模式 在这里记下192.168.161.2 进入系统,为系统自动分配一个ip 记录下 192.168.161.129 进入网络管理器配置文件目录 cd /etc/sysconfig/netw ...
- 以太坊—P2P网络
Chord算法 1.Chord 概念 Chrod算法是P2P中的四大算法之一,是有MIT(麻省理工学院)于2001年提出 . Chord的目的是提供一种能在P2P网络快速定位资源的的算法,Chord并 ...
- Beta阶段敏捷冲刺②
1.提供当天站立式会议照片一张. 每个人的工作 (有work item 的ID),并将其记录在码云项目管理中: 1.1昨天已完成的工作. 姓名 昨天已完成的工作 徐璐琳 完成设置界面的排版 祁泽文 实 ...
- [转帖]Git数据存储的原理浅析
Git数据存储的原理浅析 https://segmentfault.com/a/1190000016320008 写作背景 进来在闲暇的时间里在看一些关系P2P网络的拓扑发现的内容,重点关注了Ma ...
- NodeList & null
NodeList & null querySelectorAll & querySelector let arr = document.querySelectorAll(`[data- ...
- 用jq获取元素内文本,但不包括其子元素内的文本值的方法
<li id="listItem"> This is some text <span id="firstSpan">First span ...
- Tether USDT 节点钱包的安装与使用
当前,在进行数字资产交易的过程中,由于各国政府的政策因素,法币成为数字资产交易的一个重要问题.在法币接入数字资产交易的过程中,通常是用某种数字资产对法币进行锚定,例如bitshares上面的许多b ...