MongoDB副本详解

news2024/11/18 6:40:32
  • 概念

    • MongoDB副本集是一组维护相同数据集的mongod服务,可以提供冗余和高可用,是所有生产部署的基础;
  • mysql主从复制和mongodb副本集的区别

    • 主从复制的主从是固定的,副本集是不固定的,可以自动切换
  • 副本集角色

    • 主节点: 可读可写,主要连接点
    • 副本成员(辅助、从、Secondaries, Replicate):数据冗余备份,可读(需要配置)、可选举、不可写,不可操作;是默认的从节点类型
    • 仲裁者(Arbiter):不保留任何数据的副本,只有投票和选举作用; 也可以将仲裁服务器维护为副本集的一部分,即同时副本和仲裁;

  • 成员属性

    • priority:
      • 通过该属性值控制选举的优先级
      • 取值0-1000(arbiters只能是0或者1),值越大选举为主的优先级越高
      • 0则不可能被选为主,也不能主动发起选举;多数据中心时使用.
    • hidden:
      • 隐藏节点,同步数据,但对客户端不可见
      • mongo shell执行db.isMaster()也不会展示该节点
      • 隐藏节点必须priority 为0
      • 如果有配置选举的话可以参与选举,但不会选中
      • 一般用来做备份数据或者执行定时任务
    • slaveDelay
      • 延时一定时间同步主库数据
      • 作用: 为了防止误删,用做兜底功能
    • tags
      • 支持对副本成员打标签,查询的时候会用到
      • 通过打标的方式区分不同的副本,可以让特定的服务访问特定副本;
      • 如果某个副本宕机,不会影响其他副本
    • votes
      • 是否有权参与选举,最大可以支持7个副本节点参与选举;
  • 副本配置

    • 1, 准备3台mongodb Server, 1M 2S,可以试一台Server使用3个端口;
    • 2, 启动服务
      • nohup mongod --port 27018 --dbpath /export/data/rs0-1 --replSet rs0 --smallfiles --oplogSize 128 &启动 rs0是副本集的名字,3个服务必须同名
    • 3, 对3个实例进行初始化副本集:rs.initiate()
    • 4,查看副本集成员: rs.conf()
    • 5, 在主节点上执行添加副本操作:rs.add(host,arbiterOnly)
      • arbiterOnly: 可选,如果为true则添加的主机是仲裁节点
      • rs.add("11.127.33.226:27017")
      • rs.add("localhost:27018")
    • 6, 添加仲裁节点: rs.addArb("11.127.33.226:27018")

    • 其他操作
      • slave开启从库可读: rs.slaveOk(), rs.slaveOk(true)
      • slave关闭可读功能: rs.slaveOk(false)
  • 主节点选举原则

    • 触发原则
      • 主节点故障
      • 主节点网络不可达(默认心跳10s)
      • 人工干预: rs.stepDown(600)
    • 选举规则
      • 票数最高,过半的票数(优先级高、票高)
      • 如果票数相当,则数据新的获胜,通过oplog对比
      • 可以通过调高优先级的方式来使某个节点作为下个主节点
    • 故障情况
      • 如果仲裁节点和主节点故障,则从节点无法写入数据;不满足选举条件
      • 如果副本和仲裁都挂了,只剩下的主节点,则主节点会自动降为副本节点,无法写入;
  • 管理副本集

    • rs.status() 查看副本成员状态,health哪个挂了
    • 删除副本节点:rs.remove("192.168.62.155:17018")
    • 添加 rs.add({"host":"localhost:27018","priority":10,"hidden":false,"votes":1})
    • 重新配置副本集:rs.reconfig()
    • 查看主从关系: rs.isMaster(),同 db.serverStatus().repl
    • 把主节点降为备节点: rs.stepDown()
    • 对主节点维护100s,且其他节点不能成为主节点: rs.freeze(100000)
    • 从节点开启查询服务,退出shell后失效:db.setSlaveOk()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/160140.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

prototext format 随机空格

prototext format 随机空格问题简述代码复现解密结论总结问题简述 golang 语言,在使用 prototext 进行 format 的时候,相同的代码输出结果不唯一,有的时候字段之间是两个空格,有的时候是一个空格。 代码 先上pb文件 syntax &…

【寒假每日一题】洛谷 P6414 [COCI2014-2015#1] PROSJEK

题目链接:P6414 [COCI2014-2015#1] PROSJEK - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述 有一个数列 a,现在按照下列公式求出一个数列 b: 给你数列 b,请求出数列 a。 输入格式 第一行一个整数 n ,表示…

bugku-reverse-入门逆向 Easy_vb re 游戏过关 逆向入门

入门逆向下载文件 解压后 拖入IDA中Easy_vb同样方法 解压后 拖入IDAEasy_re下载解压后 打开似乎有点逗查下壳先拖入IDA 选中这两行字符 转译单击a 得到flag游戏过关下载文件 解压打开 发现要把8个都点亮 每次输入会把输入的数本身和他上一个下一个都改变状态,当…

Jenkin权限控制——基于角色授权策略

开启授权策略 Jenkins的项目权限控制通过【授权策略】实现,【授权策略】需要plugins提供,首先需要安装Role-based Authorization Strategy 安装Role-based Authorization Strategy 管理Jenkins——》插件管理——》搜素——》Role-based Authorizatio…

企微机器人使用及内容配置文档

如何使用群机器人 在终端某个群组添加机器人之后,创建者可以在机器人详情页看的该机器人特有的webhookurl。开发者可以按以下说明a向这个地址发起HTTP POST 请求,即可实现给该群组发送消息。下面举个简单的例子. 假设webhook是:https://qyapi…

【Git 从入门到精通】Git中常用的指令(含使用Git维护一个项目的完整操作)

文章目录一、使用git维护一个项目完整操作1.设置用户名与邮箱2.初始化项目中的Git3.使用Git追踪项目中的文件4.提交一次代码5.后期项目的更新与维护附录、常用命令一览表一、使用git维护一个项目完整操作 1.设置用户名与邮箱 注意:这个设置的并不是将代码提交到github或者gite…

CAD动态块操作实例:绘制剖面符号

CAD动态块与普通的CAD图块相比,其图形夹点更多,设计师可以利用动态块的夹点对图形进行快速调整,自由拉伸长度、随心切换隐藏形态等。本节,给大家分享一下浩辰CAD软件中利用CAD动态块的极轴拉伸功能来绘制剖面符号的具体操作步骤。…

[杂记]算法: 并查集

0. 引言 我们考虑如何计算一个图连通分量的个数. 假定简单无向图GGG有两个连通分量(子图)G1,G2G_1, G_2G1​,G2​, 如下图所示: 一个很自然的想法是, 要想求连通分量个数, 我们可以使用Full-DFS算法, 也就是我们从某个点开始深度优先搜索, 并标记访问过的元素. 随后挨个顶点…

高等数学(第七版)同济大学 总习题十一 个人解答

高等数学(第七版)同济大学 总习题十一 函数作图软件:Mathematica 1.填空:\begin{aligned}&1. \ 填空:&\end{aligned}​1. 填空:​​ (1)第二类曲线积分∫ΓPdxQdyRdz化成第一类曲线积分是_____&am…

Yarn 下载安装及常用配置和命令总结

title: Yarn 下载安装及常用配置和命令总结 date: 2023-01-13 14:47:32 tags: 开发工具及环境 categories:开发工具及环境 cover: https://cover.png feature: false 1. Node.js 建议先安装好 Node.js,见另一篇:Node.js 多版本安装及 NPM 镜像配置_凡 …

Materials - 角色分层材质规范

之前编写的解释性文档,归档发布;在传统贴图中,以BaseColor贴图为例,我们将几乎所有纹理信息都集中到一张贴图上,比如下图中,就有金属、皮革和布料等各种质感的纹理信息:即使是4K的贴图&#xff…

在Win10下装VMware17后,[ 安装VMware Tools ]选项灰色的解决办法

一、说明 菜单【虚拟机】【安装VMware Tools】按钮为灰色,无法实现【安装VMware Tools】的功能,如何解决,使这个功能可以实现?本文介绍此过程。 二、问题发现 在Win10下安装Vmware17后,生成ubuntu18的虚拟机&#xff…

基于java(springboot+mybatis)汽车信息管理系统设计和实现以及文档

基于java(springbootmybatis)汽车信息管理系统设计和实现以及文档 博主介绍:5年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言…

行业分享:光伏行业如何利用视觉检测系统降本增效?

导语:机器视觉检测已在光伏产品生产的各个环节中,为产品产量与质量提供可靠保障。维视智造作为光伏组件视觉检测系统领先者,为企业提供专业、系统、稳定的光伏组件视觉检测解决方案,可保证0漏检,全面提升生产效率。一、…

C++:C++编译过程:看完还不懂C++编译过程来捶我

1:先看图 2:一个C源文件从文本到可执行文件经历的过程: gcc Hello.cpp 预处理阶段:gcc -E hello.c -o hello.i 对源代码文件中包含关系(头文件),预编译语句(宏定义&#xff09…

React中如何拆分组件

基于自己工作中的体会,还有在做的过程中翻阅的资料,看的资料没有收藏起来,很想指出具体的出处,但是很多都是从各个地方看到的。不过都是在掘金、公众号前端开发、还有知乎上看到的。 😫 前言 随着web业务越来越复杂&a…

Elasticsearch(一)--Elasticsearch概述

一、前言 从本章开始,我将进入elasticSearch(后面简称es)的学习,同样也是通过书籍自学,并且会通过自己归纳和拓展将我觉得比较值得记录的知识点分享出来,如果大家觉得有用的话可以和我一起学习。我打算在总…

Kotlin

目录 一、Kotlin 基础语法 1、方法函数 2、常量 val 和变量 var 3、${} 字符串模板 4、null 处理 !!. 不能为空 ?.为空不处理 ?:为空处理成 5、is 类型转换 相当于 instanceof 6、Any 相当于 Java的 Object 二、Kotlin 基本数据类型 1、基本数据类型&#xf…

AMD出招,英特尔最不想看到的对手来了

前段时间的CES上,AMD正式发布Ryzen 7000的3D缓存版,对于游戏玩家来说,Ryzen 7000 3D缓存版算是今年最期待的CPU。上一代的Ryzen7 5800X3D凭借超强的游戏性能和性价比,在德国最大的PC硬件零售商的统计中,甚至成为2022年…

高并发系统设计 -- 大文件业务

上传 分片断点秒传(判断文件哈希值) 前端不断的发送请求,如果用户暂停上传的话,那么就是前端停止发送请求就可以了。我分片了,而且记录了分片的相关信息,所以实现了断点功能。 前端把文件进行分片&#…