1.副本集

高可用是绝大多数数据库管理系统的核心目标之一。如果要想生产数据在发生故障后依然可用,就需要确保为生产数据库多部署一台服务器。MongoDB副本集提供了数据的保护、高可用和灾难恢复的机制。
在MongoDB中,有两种数据冗余方式,一种是 Master-Slave 模式(主从复制),一种是 Replica Sets 模式(副本集)。主从复制和副本集使用了相同的复制机制,但是副本集额外增加了自动化灾备机制:如果主节点宕机,其中一个从节点会自动提升为从节点。除此之外,副本集还提供了其他改进,比如更易于恢复和更复杂地部署拓扑网络。

集群中没有特定的主库,主库是选举产生,如果主库down了,会再选举出一台主库。

可复制集推荐使用的最小配置包含3个节点,因为在可复制集里如果只有2个节点,那么一旦主节点垮掉,就无法进行多数投票表决。在3个成员的可复制集里可部署包含3个存储数据的节点服务器,其节点示意图如下:

也可以是2个数据存储服务器加上一个裁判服务器,其节点示意图如下:

(一主一副一仲裁)

目前,作者所在公司建立的集群大多采用后者架构。

2.MongoDB.Driver

下图是C#的MongoDB.Driver驱动版本与MongoDB版本支持关系,目前安装的MongoDB版本都是3.4.4 及以上版本。所以MongoDB.Driver版本应该选用2.4 及以上。

3.连接字符串格式

副本集连接字符串格式

mongodb://username:password@host1:port1,host2:port2[,...,hostN:portN]/database?options

options是连接配置中的可选项,replicaSet是其中的一个子项。

下面我们举一个例子来说明字符串是怎么配置的,测试环境的副本集信息如下:

副本集名称

节点角色

节点IP

端口

repsms

主服务器

172.177.177.XX1

27017

副本节点

172.177.177.XX2

27017

仲裁节点

172.177.177.XX3

27017

账号信息如下:

Username

Password

DBName

mongousertest

testuserpwd

mongotestdb

此时C#程序中connectionStr的字符串可以设置如下:

stringconnectionStr = "mongodb://mongousertest:testuserpwd@172.177.177.xx1:27017,172.177.177.xx2:27017/mongotestdb?replicaSet=reptest";

注意:因为仲裁节点没有数据副本,仲裁节点也不可能会被选举为主节点,所以连接字符串信息中不要包含仲裁节点的信息。

[说明:本文副本集相关图片来自网络,在此感谢原创作者。]

MongoDB副本集及C#程序的连接配置的更多相关文章

  1. MongoDB副本集学习(三):性能和优化相关

    Read Preferences/读写分离 有时候为了考虑应用程序的性能或响应性,为了提高读取操作的吞吐率,一个常见的措施就是进行读写分离,MongoDB副本集对读写分离的支持是通过Read Pref ...

  2. MongoDB 副本集的原理、搭建、应用

    概念: 在了解了这篇文章之后,可以进行该篇文章的说明和测试.MongoDB 副本集(Replica Set)是有自动故障恢复功能的主从集群,有一个Primary节点和一个或多个Secondary节点组 ...

  3. MongoDB副本集学习(二):基本测试与应用

    简单副本集测试 这一节主要对上一节搭建的副本集做一些简单的测试. 我们首先进入primary节点(37017),并向test.test集合里插入10W条数据: . rs0:PRIMARY> ;i ...

  4. java程序连接MongoDB副本集测试

    三个节点有一个节点挂掉也不会影响应用程序客户端对整个副本集的读写! public class TestMongoDBReplSet { public static void main(String[] ...

  5. MongoDB副本集功能及节点属性梳理

    副本集的主要功能 副本集是MongoDB高可用的基础,其主要作用 归纳为以下几点: (1)高可用,防止设备(服务器.网络)故障.提供自动FailOver功能. (2)无需配置高可用性虚拟节点:无论是S ...

  6. MongoDB副本集(一主两从)读写分离、故障转移功能环境部署记录

    Mongodb是一种非关系数据库(NoSQL),非关系型数据库的产生就是为了解决大数据量.高扩展性.高性能.灵活数据模型.高可用性.MongoDB官方已经不建议使用主从模式了,替代方案是采用副本集的模 ...

  7. MongoDB和Java(6):Spring Data整合MongoDB副本集、分片集群

    最近花了一些时间学习了下MongoDB数据库,感觉还是比较全面系统的,涉及了软件安装.客户端操作.安全认证.副本集和分布式集群搭建,以及使用Spring Data连接MongoDB进行数据操作,收获很 ...

  8. 四十三.MongoDB副本集 MongoDB文档管理

    一.部署MongoDB副本集 1.1 启用副本集配置并指定集群名称 rs1 1.2 定义集群成员列表 部署好机器51,52,53:51上配置 bind_ip=192.168.4.51(要改) port ...

  9. mongodb副本集(选举,节点设置,读写分离设置)

    1.相对于传统主从模式的优势 传统的主从模式,需要手工指定集群中的Master.如果Master发生故障,一般都是人工介入,指定新的Master.这个过程对于应用一般不是透明的,往往伴随着应用重新修改 ...

随机推荐

  1. 为什么公司宁愿 25K 重新招人,也不给你加到 20K?原因太现实……

    年底了,还有几天就要过年了,年后必定又是一波跳槽季,我们为什么要跳槽,为什么公司不能满足我们加薪的需求? 说到这个话题,想必从事码农的各位都清楚的一个道理:工资都是跳出来的,其他行业我不太清楚,但在 ...

  2. java8新特征

    一:Lambda 表达式 为什么使用    :使用 Lambda 表达式可以使代码变的更加简洁紧凑. 表达了什么?: 匿名内部类的新写法: 语法 :(parameters) -> express ...

  3. ThinkPHP 数据库操作(三) : 查询方法、查询语法、链式操作

    查询方法 条件查询方法 where 方法 可以使用 where 方法进行 AND 条件查询: Db::table('think_user') ->where('name','like','%th ...

  4. 【Storm篇】--Storm 容错机制

    一.前述 Storm容错机制相比其他的大数据组件做的非常不错. 二.具体原因 结合Storm集群架构图: 我们的程序提交流程如下:   其中各个组件的作用如下: Nimbus资源调度任务分配接收jar ...

  5. 【Storm篇】--Storm基础概念

    一.前述 Storm是个实时的.分布式以及具备高容错的计算系统,Storm进程常驻内存 ,Storm数据不经过磁盘,在内存中处理. 二.相关概念 1.异步: 流式处理(异步)客户端提交数据进行结算,并 ...

  6. 2.Django路由规则

    路由规则 1.基于正则的url 在templates目录下创建index.html.detail.html文件 (1)index.html <!DOCTYPE html> <html ...

  7. java基础(十四)-----详解匿名内部类——Java高级开发必须懂的

    在这篇博客中你可以了解到匿名内部类的使用.匿名内部类要注意的事项.匿名内部类使用的形参为何要为final. 使用匿名内部类内部类 匿名内部类由于没有名字,所以它的创建方式有点儿奇怪.创建格式如下: n ...

  8. ConcurrentModificationException 异常处理

    在工作中碰到有个异常:java.util.ConcurrentModificationException 腾讯bugly工具给出的解决方案和说明如下:该异常表示迭代器迭代过程中,迭代的对象发生了改变, ...

  9. org.apache.maven.archiver.MavenArchiver.getManifest(org.apache.maven.project.MavenProject, org.apache.maven.archiver.MavenArchiveConfiguration)

    [错误原因:]maven的配置文件不是最新的 [解决办法:]依次点击help ->Install New Software -> add ->https://otto.takari. ...

  10. 利用SQL活动和监视器找出耗时与占用CPU较高的不良SQL语句

    SQL活动和监视器是SQL Server自带的一个功能,在不断的升级优化中功能也越来越强大. 运行方式:服务器-->右键-->活动和监视器 可以看到很多数据库重要的运行状态. 1.等待任务 ...