主从模式:

在10.3.13.213 主节点, 10.3.2.33 从节点。mongodb 安装路径均为:/usr/local/server/mongodb

参考文章:http://www.lanceyan.com/tech/mongodb/mongodb_cluster_1.html

主从模式没有继续测试下去,在下载的最新的mongodb安装包中,已经不支持主从复制了:

MongoDB 4.0删除了对主从复制的支持。在升级到MongoDB 4.0之前,如果部署使用主从复制,则必须升级到副本集

一般情况下,配置一个主节点,一个或多个从节点,主节点用于写入数据,从节点用于读取数据(也是可以配置写的,默认只读),实现读写分离。

配置从节点从主节点同步数据,默认马上同步,可以设置时间(slavedelay)。

source = 10.3.13.213:27017 配置主节点的ip与端口,only = abc也可以配置只同步某个数据库

问题:

主节点挂了,不能自动切换,得手动切换。(高可用性不好)

主节点的写压力没有减轻。

从节点的数据都是从主节点同步过来的,对从节点压力过大

不能自动扩展(扩展性不好)

副本集模式

参考:http://www.lanceyan.com/tech/mongodb/mongodb_repset1.html\

副本集的一些概念:

各个节点之间有一个心跳机制,检测是否有节点挂了,若出现主节点挂了则从从节点中选出一个新的主节点。

环境搭建:

1. 10.3.13.213 副本集主节点,10.3.2.33 副本集副本节点,10.3.2.34  副本集副本节点

2. 每个节点上依次运行:./bin/mongod --config /usr/local/server/mongodb/mongodb.conf

mongodb.conf的内容:

3.  在任意一个节点上面:./bin/mongo 任意一个节点上运行脚本

4.  use admin  转到admin数据库(自带的)

5. 初始化副本集配置

config = { _id:"repset", members:[

... {_id:0,host:"10.3.13.213:27017"},

... {_id:1,host:"10.3.2.33:27017"},

... {_id:2,host:"10.3.2.34:27017"}]

... }

> rs.initiate(config);

config里面的members里面的配置解释:

priority:1  members里包含的是所有节点的地址以及优先级。优先级最高的即成为主节点

Secondary-Only:不能成为primary节点,只能作为secondary副本节点,防止一些性能不高的节点成为主节点。

Hidden:这类节点是不能够被客户端制定IP引用,也不能被设置为主节点,但是可以投票,一般用于备份数据。

Delayed:可以指定一个时间延迟从primary节点同步数据。主要用于备份数据,如果实时同步,误删除数据马上同步到从节点,恢复又恢复不了。

Non-Voting:没有选举权的secondary节点,纯粹的备份数据节点

查看集群节点的状态:

在mogo脚本下运行:rs.status() 查看返回结果。

主节点写入的数据会自动复制到副本节点

在主节点 10.3.2.33上运行:

repset:PRIMARY> use test

repset:PRIMARY> db.testcc.insert("test1","test11111")

在副本节点10.3.13.213上查看

因为mongodb默认从主节点读和写数据,所以需要设置从节点的可读

repset:SECONDARY> db.getMongo().setSlaveOK()

repset:SECONDARY> db.testcc.find()

返回结果:{ "_id" : ObjectId("5c048ff317f3022be4577b9f"), "test1" : "test11111" }

副本集的故障转移 :

若一个节点挂掉了(即便是主节点),数据库还可以继续使用,数据不会丢失。

若主节点挂掉了,就从原来的从节点中自动投票选出主节点。

将主节点10.3.2.33的进程kill掉。之后 repset:PRIMARY> rs.status() 发现,在原来的两个副本节点中一个变成了主节点。

将原来挂掉的那个主节点重新跑起来后,发现它就变成了副节点了。

读写分离:

为了减轻主节点的读写压力,可以设置读时只从副节点进行读参见:https://www.cnblogs.com/yanliang12138/p/10012649.html

仲裁节点:

仲裁节点不负责存储数据,只负责故障转移时的群体投票

设置仲裁节点:在初始化配置时,members中设置{_id:2,host:'10.3.2.34:27017',arbiterOnly:true}

这样设置好这个仲裁节点后,这个节点没有数据存储到本地,但是可以读取到副本集的相关信息。

参考:https://www.cnblogs.com/callmecool/p/4662876.html

https://yq.aliyun.com/wenji/263333

bully算法,竞选出主节点

在主节点挂掉之后,需要在剩下的从节点中选出一个新的主节点

具体参考:http://www.lanceyan.com/tech/mongodb_repset2.html

分片模式:

MongoDB_副本集集群模式的更多相关文章

  1. mongodb之集群模式

    前言 数据量大了或者并发量上来了,单机肯定是抗不住的,这个时候要开始考虑使用集群了.mongodb目前为止支持三种集群模式:主从集群,副本集集群,分片集群. 主从集群 特性 1. 一主多从2. 主负责 ...

  2. RabbitMQ学习之集群模式

    由于RabbitMQ是用erlang开发的,RabbitMQ完全依赖Erlang的Cluster,因为erlang天生就是一门分布式语言,集群非常方便,但其本身并不支持负载均衡.Erlang的集群中各 ...

  3. Redis 单机模式,主从模式,哨兵模式(sentinel),集群模式(cluster),第三方模式优缺点分析

    Redis 的几种常见使用方式包括: 单机模式 主从模式 哨兵模式(sentinel) 集群模式(cluster) 第三方模式 单机模式 Redis 单副本,采用单个 Redis 节点部署架构,没有备 ...

  4. Docker 部署 RocketMQ Dledger 集群模式( 版本v4.7.0)

    文章转载自:http://www.mydlq.club/article/97/ 系统环境: 系统版本:CentOS 7.8 RocketMQ 版本:4.7.0 Docker 版本:19.03.13 一 ...

  5. Redis学习笔记~conf自主集群模式

    回到目录 Redis自主提供了集群模式,当然也只是比较简单的读写分离模式,或者叫主从模式,它在各个redis服务端自己做数据同步机制,当然就是将主服务端的信息同步到各个slave服务器上,在客户端集成 ...

  6. 就publish/subscribe功能看redis集群模式下的队列技术(一)

    Redis 简介 Redis 是完全开源免费的,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持久化,可以将内存中 ...

  7. 22.mongodb副本集集群

    软件版本64位:     $ wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.2.0.tgz     mongo ...

  8. Greenplum源码编译安装(单机及集群模式)完全攻略

    公司有个项目需要安装greenplum数据库,让我这个gp小白很是受伤,在网上各种搜,结果找到的都是TMD坑货帖子,但是经过4日苦战,总算是把greenplum的安装弄了个明白,单机及集群模式都部署成 ...

  9. 在集群环境中使用 EhCache 缓存系统|RMI 集群模式

    RMI 是 Java 的一种远程方法调用技术,是一种点对点的基于 Java 对象的通讯方式.EhCache 从 1.2 版本开始就支持 RMI 方式的缓存集群.在集群环境中 EhCache 所有缓存对 ...

  10. Spark Streaming揭秘 Day31 集群模式下SparkStreaming日志分析(续)

    Spark Streaming揭秘 Day31 集群模式下SparkStreaming日志分析(续) 今天延续昨天的内容,主要对为什么一个处理会分解成多个Job执行进行解析. 让我们跟踪下Job调用过 ...

随机推荐

  1. 读懂 Deployment YAML【转】

    既然要用 YAML 配置文件部署应用,现在就很有必要了解一下 Deployment 的配置格式,其他 Controller(比如 DaemonSet)非常类似. 还是以 nginx-deploymen ...

  2. 1653: Champion of the Swordsmanship

    1653: Champion of the Swordsmanship Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 11  Solved: 8[Subm ...

  3. 79 最长公共子串 (lintcode)

    f[i][j]表示的是以第i个结尾和第j个结尾 class Solution { public: /* * @param A: A string * @param B: A string * @ret ...

  4. Webpack的使用指南-Webpack小结

    参考文章: https://baijiahao.baidu.com/s?id=1594972657801970108&wfr=spider&for=pc 使用Webpack有一段时间了 ...

  5. QT +自定义控件-spin+slider

    动手实现自定义控件: 1.首先在ui界面中添加一个(Widget)容器类.如图中的1所示 2.在项目中添加一个SmallWidget类,如下: 3.接着在程序编辑界面进行程序编辑如下: #includ ...

  6. shell脚本,通过一个shell程序计算n的阶乘。

    [root@localhost ~]# cat jiechen.sh #!/bin/bash #设计一个shell程序计算n的阶乘,要求: #.从命令行接收参数n; #.在程序开始后立即判断n的合法性 ...

  7. JS数组专题2️⃣ ➖ 数组去重

    距离上次发文,已经有一段时间了,最近工作比较忙,这不眼看快双十一了,就相当于给大家一些福利吧! 一.什么是数组去重 简单说就是把数组中重复的项删除掉,你 GET 到了吗 ?下面我将简单介绍下几种基本的 ...

  8. 单机简单搭建一个kafka集群(没有进行内核参数和JVM的调优)

    1.JDK安装 在我的部署单节点kafka的博客里有相关的方法.(https://www.cnblogs.com/ToBeExpert/p/9789486.html )zookeeper和kafka的 ...

  9. UVa-156-反片语

    这题比较精妙的是,我们对于单词重排,实际上是进行了标准化的处理,即按照字典序排序. 这样的话,就很方便地处理了单词的重排问题,我们不需要使用全排列函数进行排列尝试,我们直接化简为一,然后进行比较就可以 ...

  10. day23 02 组合(继续人狗大战游戏)

    day23 02 组合(继续人狗大战游戏) 面向对象的三大特性:继承 多态 封装 先讲解一下组合 组合:一个对象的属性值是另一个类的对象:对象.属性.属性(一般有两个点) 继续扩展day22 01里面 ...