主从模式:

在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. KTU Programming Camp (Winter Training Day 1)

    A.B.C(By musashiheart) 0216个人赛前三道题解 E(By ggg) Gym - 100735E Restore H(by pipixia) Gym - 100735H

  2. (八)VMware harbor 成员管理

    (一)VMware harbor 成员管理 可以给项目添加成员,成员必须是已经注册的成员. 添加成员后,成员就会有4种角色:项目管理员,维护人员,开发人员,访客. 1.1 新建成员 1.2 修改角色 ...

  3. k8s学习目录

    目录 K8S基础部分 基础部分 5 秒创建 k8s 集群[转] k8s 核心功能[转] k8s 重要概念[转] 部署 k8s Cluster(上)[转] 部署 k8s Cluster(下)[转] Ku ...

  4. TCP/IP各种数据包结构体

    下面这些TCP/IP数据包是我在进行Socket及Wipcap网络编程过程中曾经用到过的数据包结构体, 这些东西平时看起来不起眼,真正用到的时候就会觉得非常有用...... 以太帧头格式结构体,共14 ...

  5. Python GUI界面开发环境配置:Pycharm+PyQt5

    通过DoS命令行执行如下命令,可能需要管理员权限. 检查Python版本:python 更新pip版本:python -m pip install --upgrade pip 安装PyQt5: pip ...

  6. CodeForces:699B-One Bomb

    B. One Bomb time limit per test1 second memory limit per test256 megabytes Problem Description You a ...

  7. PAT Basic 1064

    1064 朋友数 如果两个整数各位数字的和是一样的,则被称为是“朋友数”,而那个公共的和就是它们的“朋友证号”.例如 123 和 51 就是朋友数,因为 1+2+3 = 5+1 = 6,而 6 就是它 ...

  8. 创建安卓模拟器的两种方式及常用Android命令介绍

    创建安卓模拟器有以下两种方式: 1>通过图形界面创建,在Eclipse中单击Windows->Android Virtual Device Manager启动图形界面窗口 2>如果用 ...

  9. Java POI 操作Excel(读取/写入)

    pom.xml依赖: <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi< ...

  10. Debian7安装msf

      安装metasploit curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templa ...