MongoDB-3.4搭建副本集

时间:2021-09-09 06:00:27

搭建副本集

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

IP1:192.168.101.175

IP2:192.168.101.176

IP3:192.168.101.177

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

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-3.4搭建副本集

启动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)

MongoDB-3.4搭建副本集

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})

MongoDB-3.4搭建副本集

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

MongoDB-3.4搭建副本集

模拟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&lpar;二&rpar; -- 搭建分片集群

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

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

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

  5. MongoDB 副本集搭建 &amp&semi; 副本集扩容

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

  6. MongoDB 搭建副本集

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

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

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

  8. Percona MongoDB 4 搭建副本集

    什么是副本集: 是一组维护相同数据集的mongod进程 提供冗余,自动故障转移和高可用性 提供读取可伸缩性 内部概念或多或少与MySQL的概念相似 PRIMARY概念与MySQL复制中的MASTER大 ...

  9. mongodb学习之:副本集

    前面一张介绍了主从模式,现在mongoDB官方已经不建议使用主从模式了,替代方案是采用副本集的模式.副本集不能在一台电脑上操作.需要准备3台电脑进行搭建.副本集就是mongoDB副本所组成的一个集群. ...

随机推荐

  1. HBase框架学习之路

    1 背景知识 1.1 解决问题 解决HDFS不支持单条记录的快速查找和更新的问题. 1.2 适用情况 存在亿万条记录的数据库,只有千万或者百万条记录使用RDBMS更加合适 确保你的应用不需要使用RDB ...

  2. Event Sourcing Pattern 事件源模式

    Use an append-only store to record the full series of events that describe actions taken on data in ...

  3. Python Day2

    一.列表 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 新建一个列表 name = ['ShaoLin','Tom','Kimi','Rain','A ...

  4. sonne&lowbar;game网站开发03 spring-mvc&plus;freemarker整合

    今天的任务就是在spring+mybatis+springmvc的基础上,将freemarker整合进来. freemarker是什么? freemarker是一种模板引擎.它的目的是基于模板和数据, ...

  5. settimeout vs setinternal

    http://blog.sina.com.cn/s/blog_6b1ab3be0100pzmo.html http://www.360doc.com/content/11/0412/17/100779 ...

  6. LayoutInflater作用是将layout的xml布局文件实例化为View类对象。

    获取LayoutInflater的方法有如下三种: LayoutInflater inflater=(LayoutInflater)context.getSystemService(Context.L ...

  7. 我是如何自学 Python 的

    不少初学 Python 或者准备学习 Python 的小伙伴问我如何学习 Python.今天就说说我当时是怎么学习的. 缘起 我大学专业是电气工程,毕业后做的是自动化方面的工作.对于高级语言编程基本是 ...

  8. ROS学习(八)—— 理解ROS服务和参数

    一.ROS 服务 服务(services)是节点之间通讯的另一种方式.服务允许节点发送请求(request) 并获得一个响应(response) 二.rosservice 1.用途 rosservic ...

  9. day10&lpar;IO流汇总&rpar;

    字节流 (Reader,Writer) 输入流  FileReader public class Demo { public static void main(String[] args) throw ...

  10. wireshark解析https协议方法

    本文仅介绍通过协商密钥的方式实现https解析的方法 wireshark支持pem