返回顶部
首页 > 资讯 > 数据库 >MongoDB复制集角色类型详解
  • 847
分享到

MongoDB复制集角色类型详解

2024-04-02 19:04:59 847人浏览 独家记忆
摘要

                      MongoDB复制集角色类型Mo


                      MongoDB复制集角色类型

MongoDB复制集角色类型

1、标准节点: 参与primary选举,当自身宕机或停止服务会自动让出primary

2、被动节点: 只能成为second 不参与选举,被设置为被动节点则不能参与选举

3、仲裁节点:负责投票选举,不存放数据,确保标准节点投票数不会相同


用实验来验证一下标准节点互相抢占和被动节点不会抢占以及仲裁节点不存放数据。

利用mongoDB多实例进行实验,yum安装MonGoDB以及开启多实例请参考以下

我的另一篇博客:https://blog.51cto.com/13760226/2174032


实验角色

●标准节点1:192.168.60.135:27017

●标准节点2:192.168.60.135:27018

●被动节点 :192.168.60.135:27019

●仲裁节点 :192.168.60.135:27020


一、修改配置文件

vim  /etc/mongod.conf

systemLog:        #日志模块下修改日志文件路径

  destination: file

  logAppend: true

  path: /usr/local/mongodb/mongod1.log

(剩下实例也要修改,例:mongod2.log,mongod3.log,mongod4.log)


storage:      #存储模块下修改数据配置文件

  dbPath: /usr/local/mongo1

(同上,例:mongo2,mongo3,mongo4)


net:

  port: 27017         每个实例端口号不能相同(例:27018,27019,27020)

  bindIp: 0.0.0.0     监听任意地址


直接添加如下两行,开启复制集

replication: 

  replSetName: repl



二、复制配置文件,创建各自数据存放目录

cp /etc/mongod.conf /etc/mongod2.conf

cp /etc/mongod.conf /etc/mongod3.conf

cp /etc/mongod.conf /etc/mongod4.conf



mkdir /usr/local/mongo{1,2,3,4}    #一次创建4个数据存放目录(与配置文件的对应)

mkdir /usr/local/mongodb  #创建日志存放目录

touch mongod{1,2,3,4}.log   #创建实例对应日志文件

(注意:不要忘记修改复制的配置文件,端口号不能相同)


三、开启多实例,设置标准,被动,仲裁节点

[root@localhost ~]#mongod -f /etc/mongod.conf

[root@localhost ~]#mongod -f /etc/mongod2.conf

[root@localhost ~]#mongod -f /etc/mongod3.conf

[root@localhost ~]#mongod -f /etc/mongod4.conf


[root@localhost mongodb]# netstat -ntap | grep mongod

tcp        0      0 0.0.0.0:27019           0.0.0.0:*               LISTEN      2280/mongod         

tcp        0      0 0.0.0.0:27020           0.0.0.0:*               LISTEN      2308/mongod         

tcp        0      0 0.0.0.0:27017           0.0.0.0:*               LISTEN      2224/mongod         

tcp        0      0 0.0.0.0:27018           0.0.0.0:*               LISTEN      2252/mongod  


1)进入其中一个Mongodb进行设置,本文以27017为例

mongo进入数据库,设置如下

>cfg={"_id":"repl","members":

[{"_id":0,"host":"192.168.60.135:27017","priority":100},

{"_id":1,"host":"192.168.60.135:27018","priority":100},

{"_id":2,"host":"192.168.60.135:27019","priority":0},

{"_id":3,"host":"192.168.60.135:27020","arbiterOnly":true}]}


cfg只是一个名字,类似于变量。将27017和27018优先级设置为100,

27019的优先级为0,没有资格参与选举,27020设置为arbite,为仲裁复制集。


> rs.initiate(cfg)               #进行初始化

{                              #提示如下信息

            "ok" : 1,

            "operationTime" : Timestamp(1536851525, 1),

            "$clusterTime" : {

                    "clusterTime" : Timestamp(1536851525, 1),

                    "signature" : {

                            "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),

                             "keyId" : NumberLong(0)

                        }

                    }

      }


2)查看状态

repl:PRIMARY> rs.status()


MongoDB复制集角色类型详解

MongoDB复制集角色类型详解

MongoDB复制集角色类型详解


27017被选为标准节点,27018有选举权但是已经有标准节点,所以变为被动节点,

27019被选为被动节点,27020被设置为仲裁节点。


四、验证

1)验证标准节点会互相抢占

repl:PRIMARY> rs.stepDown()    #主动放弃主复制权


MongoDB复制集角色类型详解

MongoDB复制集角色类型详解



2)验证被动节点不抢占

[root@localhost ~]# mongod -f /etc/mongod.conf --shutdown

killing process with pid: 2224

[root@localhost ~]# mongod -f /etc/mongod2.conf --shutdown

killing process with pid: 2252

关闭27017和27018的MongoDB

[root@localhost ~]# mongo -port 27019   #进入mongodb端口27019

  >rs.status()


MongoDB复制集角色类型详解

MongoDB复制集角色类型详解

MongoDB复制集角色类型详解


结论:当两台标准节点宕机时,被动节点也不会顶替成为标准节点,因为没有选举权。


3)验证仲裁服务器不存储数据


开启MongoDB27017端口

[root@localhost ~]# mongod -f /etc/mongod.conf

mongo    #登陆


use list;    #创建一个数据库

db.list.insert({"name":"zhangsan"})     创建list集合并插入信息    

repl:PRIMARY> db.list.find();             查询list

{ "_id" : ObjectId("5b9a8ae579c4aae2378a4fd6"), "name" : "zhangsan" }


然后我们切换到27020仲裁服务器

[root@localhost ~]# mongo -port 27020

rs.slaveOk()    #先输出该命令,不然无法查看


repl:ARBITER> show dbs;     #查看数据库

local  0.000GB           #只能看见一个数据库local


结论:仲裁服务器只负责投票选举,不参与数据存储


您可能感兴趣的文档:

--结束END--

本文标题: MongoDB复制集角色类型详解

本文链接: https://lsjlt.com/news/36587.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MongoDB复制集角色类型详解
                          MongoDB复制集角色类型Mo...
    99+
    2024-04-02
  • 详解MongoDB复制集
    何为复制集?复制集是额外的数据副本,是跨多个服务器同步数据的过程,复制集提供了冗余并增加了数据可用性,通过复制集可以对硬件故障和中断的服务进行恢复。复制集主从同步的原理和mysql类似,主节点记录在其上的所...
    99+
    2024-04-02
  • 详解MongoDB的角色管理
    目录NO.1 MongoDB内建角色内建角色的种类和特点?数据库用户角色:数据库管理角色:集群管理角色:备份和恢复角色:全数据库角色超级用户:内部角色:MongoDB中的角色特点NO...
    99+
    2024-04-02
  • MongoDB复制集的选举原理详解以及复制集管理简介
    前言介绍复制的原理:复制操作是基于oplog,类似mysql中的bin-log,只记录发生改变的记录。选举的原理:节点分为:标准节点、被动节点和仲裁节点。标准节点(priority值高):只有标准节点才可成...
    99+
    2024-04-02
  • python的集合类型详解
    目录集合:创建集合集合的基本操作集合的内建函数和方法总结集合: 无序不重复的元素的组合 利用集合可以删除列表中的重复项(set()唱用作去重操作) 分类:可变集合(set),不可变...
    99+
    2024-04-02
  • C++ 强制类型转换详解
    目录一、C强制转换二、C++强制转换1、static_cast 静态转换(编译时检查)2、const_cast 常量转换3、reinterpret_cast 重新解释转换4、dyna...
    99+
    2024-04-02
  • Replica sets架构复制集(2)详解
    接上文,我们已经搭建成功了,下面是我们查看日志等详细解读 我们可以通过执行“db.printCollectionStats()”命令查看到操作日志的一些基本信息,如大小,日志启动时间等,查看primary...
    99+
    2024-04-02
  • Mybatis-Plus自定义集合类型的类型处理器详解
    目录1.配合xml文件2.手动注册两种方法,第一种很麻烦,对mp自带的插入操作有限制,后来改为更简洁的第二种方法 1.配合xml文件 TypeHandler @Slf4j @Map...
    99+
    2024-04-02
  • Golang拾遗之实现一个不可复制类型详解
    目录如何复制一个对象为什么要禁止复制运行时检测实现禁止复制初步尝试更好的实现性能优点和缺点静态检测实现禁止复制利用Locker接口不可复制实现静态检测优点和缺点更进一步利用packa...
    99+
    2023-02-20
    Golang实现不可复制类型 Golang不可复制类型 Go 不可复制类型
  • Python的集合类型之set和frozenset详解
    目录集合类型—set,frozensetset和frozenset的实例提供以下操作:len(s)xinsxnotinsisdisjoint(other)issubset...
    99+
    2024-04-02
  • Python内置数据类型中的集合详解
    目录1. 集合 set 简介1.1 使用 { } 直接创建集合1.2 使用 set() 函数创建集合2. 集合没有切片功能!3. 处理集合的常见内置函数3.1  len 函...
    99+
    2024-04-02
  • C++超详细讲解强制类型转换
    目录1 C 强制类型转换2 C++ 强制类型转转1 C 强制类型转换 C 方式的强制类型转换的用法如下代码所示: (Type)(Expression) Type:需要转换成的类型Ex...
    99+
    2024-04-02
  • Mongo复制集同步验证的实例详解
    mongo复制集同步验证的实例详解 第一步:在主节点上插入一条数据 Sql代码  rs0:PRIMARY> use imooc switched to db imooc rs0...
    99+
    2024-04-02
  • C++中的强制类型转换操作详解
    目录相关术语C语言中的强制类型转换C++中的强制类型转换static_castdynamic_castreinterpret_castconst_cast注意事项相关术语 强制类型转...
    99+
    2023-05-17
    C++强制类型转换 C++类型转换
  • Golang拾遗之自定义类型和方法集详解
    golang拾遗主要是用来记录一些遗忘了的、平时从没注意过的golang相关知识。 很久没更新了,我们先以一个谜题开头练练手: package main import ( ...
    99+
    2023-02-20
    Golang自定义类型 方法集 Golang自定义类型 Golang 方法集
  • 怎么解决Mongodb中mongo复制集只剩一个secondery节点问题
    这篇文章主要介绍“怎么解决Mongodb中mongo复制集只剩一个secondery节点问题”,在日常操作中,相信很多人在怎么解决Mongodb中mongo复制集只剩一个secondery节点问题问题上存在...
    99+
    2024-04-02
  • Java8新特性之重复注解与类型注解详解
    目录Java8新特性重复注解与类型注解一、JDK5中的注解1.注解(@)2.作用3.如何理解注解?4.关于注解5.注解分为三个阶段6.注解的属性类型7.为注解增加属性二、Java8中...
    99+
    2024-04-02
  • C语言强制类型转换规则实例详解
    目录整形之间的强制转换无符号转有符号有符号转无符号不同长度数字转化中的截断整形与浮点数的强制类型转换总结整形之间的强制转换 在强制类型转换中,我们常用的整形强制转换有无符号和有符号类...
    99+
    2024-04-02
  • C++超详细讲解强制类型转换的用法
    目录static_castdynamic_castconst_castreinterpret_caststatic_cast static_cast<type-id>(e...
    99+
    2024-04-02
  • 关于MongoDB复制,你了解多少(附副本集常见任务教程)
    MongoDB Manual (Version 4.2)> Replication MongoDB中的副本集是一组维护相同数据集合的  mongod进程。副本集提供了冗余和高可用性,并...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作