主从模式:

在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. Mac app 破解之路

    6年之前一直做过一些内存挂,脚本挂.都是比较低级的技术. 这几年期间,断断续续利用业余时间学了一些汇编的知识,当时只是想着破解游戏. 所有的黑技术都是业余自学的,没有老师可以问,只能百度和自己领悟,比 ...

  2. Schur 三角化定理的推论

    将学习到什么 从 Schur 的酉三角化定理可以收获一批结果,在这一部分介绍重要的几个.   迹与行列式 相似矩阵具有相同的特征多项式, 从特征多项式一节中, 我们又知道,相似矩阵的迹以及行列式都是相 ...

  3. 使用Microsoft Hadoop(一)

    To run this program, stage some data in HDFS: 1. create a text file called input.txt that has one in ...

  4. ExtJs如何使用自定义插件动态保存表头配置(隐藏或显示)

    关于保存列表表头的配置,一般我们不需要与后台交互,直接保存在 localStorage 中就能满足常规使用需求(需要浏览器支持). 直接上代码,插件: Ext.define('ux.plugin.Co ...

  5. 如何优化sql查询

    借鉴https://www.cnblogs.com/ssrstm/p/5753068.html和https://www.cnblogs.com/exe19/p/5786806.html 1. 对查询进 ...

  6. 【技巧:字符串同构】Avendesora

    判断字符串“同构”的技巧 题目大意 给定A,B两个序列,要求B在A中出现的次数以及位置.定义字符变换:把所有相同的字符变为另一种字符:两个字符串相等:当且仅当一个字符串可以在若干次字符变换之后变为另一 ...

  7. java获取时间格式

    文章来源:https://www.cnblogs.com/hello-tl/p/9263602.html package com.util; import java.text.SimpleDateFo ...

  8. 1、初学探讨PYTHON的itchat和wxpy两库

    最近好奇学习了python,觉得简单明了,但是最头疼的就是调整空格和调试吧,的确调试不如C#使用visual studio 方便,都是使用print()来调试.也许因为我是菜鸟,如果大家还有更好的方法 ...

  9. Oracle常用查询语句

    "ORACLE数据字典视图的种类分别为:USER,ALL 和 DBA. USER_*:有关用户所拥有的对象信息,即用户自己创建的对象信息 ALL_*:有关用户可以访问的对象的信息,即用户自己 ...

  10. main()中的参数argc, argv

    转自:http://blog.csdn.net/eastmount/article/details/20413773 一.main()函数参数 通常我们在写主函数时都是void main()或int ...