MongoDB——副本集构建

2023-05-16

复制

MongoDB数据库在实际生产环境下,多数基于多服务器集群运行,并进行相应的数据分布式处理。因此,必须考虑数据读写的可用性和安全性,如一台服务器出故障时,应该能保证MongoDB数据处理的正常进行。

复制(Replication,在MongoDB数据库里又称“副本集”①)就是为解决上述问题而产生的,通过复制功能可以实现多服务器的数据冗余备份操作;使备份数据的服务器具备额外提供独立读访问请求的功能(分布式读取数据,可以解决高并发客户端读用户访问问题);当服务器出故障时,提供自动故障转移、自动数据恢复。

1、复制基本原理

在执行复制动作之前,需要先在不同服务器中安装Mongod实例(通常一个服务器安装一个mongod.exe程序)。一个典型副本集包括了几个数据保存节点(这里把一个节点看
作一台服务器),并可以选择另外一个独立节点作为副本集数据复制管理的仲裁节点(Arbiter Node)。在副本集中,只有一个是主节点(Primary Node),其他几个是从节点
(Secondary Node)。一般情况下一个副本集至少需要3个节点(一主二从),如图所示。

在这里插入图片描述

主节点负责接收客户端写入数据操作(默认情况下主节点也承担了读的任务,在大访问量情况下,存在访问瓶颈问题)。从节点负责从主节点复制数据,以保证主从节点数据的一致性和安全性。复制依据为本地的Oplog(复制操作日志local.oplog.rs)集合。主节点与从节点进行同步Oplog更新。当副本集只有偶数个节点时,可以增加仲裁节点。作为仲裁节点的服务器只装mongod.exe程序,不承担数据副本的存储任务。仲裁节点通过心跳(Hearbeat)功能保持与
其他节点的联系,一旦主节点出故障,就进行新主节点选举投票,确保新的主节点及时产生并工作。

2、搭建副本集

单机环境搭建一个1主2从的副本集。

新建文件夹,为各个实例存放数据和日志文件还有配置文件:

角色数据日志配置文件
主(127.0.0.1:27017)/data/log/etc/mongod.yaml
从1(127.0.0.1:27018)/data1/log1/etc1/mongd1.yaml
从2(127.0.0.1:27019)/data2/log2/etc2/mongd2.yaml

在这里插入图片描述

#主配置 mongod.yaml
net:
	bindIp: 127.0.0.1
	port: 27017
processManagement:
	fork: true
systemLog:
	destination: file
	path: "/usr/local/mongodb-macos-x86_64-5.0.17/log/mongo.log"
	logAppend: true
storage:
	dbPath: "/usr/local/mongodb-macos-x86_64-5.0.17/data"
replication:
	replSetName: "myapp" #副本集名称

#从1配置 mongod1.yaml
net:
	bindIp: 127.0.0.1
	port: 27018
processManagement:
	fork: true
systemLog:
	destination: file
	path: "/usr/local/mongodb-macos-x86_64-5.0.17/log1/mongo.log"
	logAppend: true
storage:
	dbPath: "/usr/local/mongodb-macos-x86_64-5.0.17/data1"
replication:
	replSetName: "myapp" #副本集名称


#从2配置 mongod2.yaml
net:
	bindIp: 127.0.0.1
	port: 27019
processManagement:
	fork: true
systemLog:
	destination: file
	path: "/usr/local/mongodb-macos-x86_64-5.0.17/log2/mongo.log"
	logAppend: true
storage:
	dbPath: "/usr/local/mongodb-macos-x86_64-5.0.17/data2"
replication:
	replSetName: "myapp" #副本集名称

启动3个实例:

mongod -f ./etc/mongod.yaml
mongod -f ./etc1/mongod1.yaml
mongod -f ./etc2/mongod2.yaml

在这里插入图片描述
设置集群配置文件:
在任意一个启动的Mongo上设置下配置信息,然后初始化
mongo -port 27017

use admin
config = {
	_id: "myapp",
	members: [
		{_id: 0, host: "127.0.0.1:27017", "priority": 3},
		{_id: 1, host: "127.0.0.1:27018", "priority": 2},
		{_id: 2, host: "127.0.0.1:27019", "priority": 1}
	]
}

//初始化命令
rs.initiate(config)

在这里插入图片描述

测试:db.isMaster()
在这里插入图片描述
测试:rs.conf()查看副本集配置对象内容
在这里插入图片描述

连接从1节点:mongo -port 27018
查询数据报错:
在这里插入图片描述
备份节点可能会落后于主节点,可能没有最新写入的数据,所以备份节点在默认情况下会拒绝读取请求,以防止应用程序意外拿到过期的数据。因此,如果在备份节
点上做查询,可能会得到一个错误提示,说当前节点不是主节点。

这是为了保护应用程序,以免意外连接到备份节点,读取到过期数据。如果希望从备份节点读取数据,需要设置“从备份节点读取数据没有问题”标识,如下所示:

rs.secondaryOk()

在主库插入一条数据:
在这里插入图片描述
从库查询:
在这里插入图片描述

从库写入数据:
在这里插入图片描述

可以看到,不能对备份节点执行写操作。备份节点只通过复制功能写入数据,不接受客户端的写入请求。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MongoDB——副本集构建 的相关文章

  • USACO Network of Schools(学校网络) ---强连通分量

    描述 一些学校的校园网连接在一个计算机网络上 学校之间存在软件支援协议 每个学校都有它应支援的学校名单 xff08 学校a支援学校b xff0c 并不表示学校b一定支援学校a xff09 当某校获得一个新软件时 xff0c 无论是直接得到的
  • iOS开发-使用Storyboard进行界面跳转及传值

    前言 xff1a 苹果官方是推荐我们将所有的UI都使用Storyboard去搭建 xff0c Storyboard也是一个很成熟的工具了 使用Storyboard去搭建所有界面 xff0c 我们可以很迅捷地搭建出复杂的界面 xff0c 也就
  • iOS 8 自适应 Cell

    在使用 table view 的时侯经常会遇到这样的需求 xff1a table view 的 cell 中的内容是动态的 xff0c 导致在开发的时候不知道一个 cell 的高度具体是多少 xff0c 所以需要提供一个计算 cell 高度
  • Linux命令之切换用户

    一 从 user 用户切换到 root 用户 不管是用图形模式登录 Ubuntu xff0c 还是命令行模式登录 xff0c 我们会发现缺省的用户是 user xff0c 但是当我们需要执行一些具有 root 权限的操作 如修还系统文件 时
  • CNN对位移、尺度和旋转不变性的讨论

    CNN得益于全局共享权值和pool操作 xff0c 具有平移不变性 对于尺度不变性 xff0c 是没有或者说具有一定的不变性 xff08 尺度变化不大 xff09 xff0c 实验中小目标的检测是难点 xff0c 需要采用FPN或者其他的方
  • AtCoder Regular Contest 069 D 思维,模拟 E 模拟,贪心

    AtCoder Regular Contest 069 D Menagerie 题意 xff1a n只动物从1到n围成一个圈 xff0c 每只动物要么是羊要么是狼 每只动物会说出一个字母 xff0c 说 39 o 39 表示它两边动物种类相
  • git stash解决代码merge出错

    最近在使用git提交代码时 xff0c 遇到一个问题 xff0c 就是我修改了几个文件的代码 xff0c 然后又想把自己代码库里面的代码更新到最新版本 xff0c 然后不出所料 xff0c 代码冲突了 xff01 作为一个喜欢解决问题的程序
  • 锐捷网络交换机的配置命令集

    转自 xff1a http hi baidu com bjgbd 交换机 gt Enable 进入特权模式 Exit 返回上一级操作模式 End 返回到特权模式 write memory 或copy running config start
  • MongoDB——配置文件详解

    配置文件 MongoDB常用配置参数可以由config配置文件统一设置实现 Mongod的配置文件是mongod yaml Mongos的配置文件为mongos yaml MongoDB在2 6版本开始 xff0c 配置文件 采用YAML格
  • 计算机远程桌面自动关闭,windows10重启之后自动关闭远程桌面是怎么回事

    首先 xff0c 请大家打开Win 10系统桌面主页面 xff0c 在桌面页面中点击开始菜单 xff0c 在弹出的开始菜单中点击选择 设置 选项 xff0c 进入Win10系统设置页面 在Win10系统设置页面中 xff0c 点击选择 更新
  • openwrt issues

    1 ssh 没密码不让登录 解决方法 xff1a 使用串口登录上 passwd root 设置密码后 etc init d dropbear restart 发现option BannerFile 39 etc banner 39 被屏蔽掉
  • 图片样本集

    图像识别训练样本集 ImageNet ImageNet是一个计算机视觉系统识别项目 xff0c 是目前世界上图像识别最大的数据库 是美国斯坦福的计算机科学家李飞飞模拟人类的识别系统建立的 能够从图片识别物体 目前已经包含14197122张图
  • ubuntu16.10安装网易云音乐

    首先去官网 xff08 https music 163 com download xff09 下载安装包 xff1a netease cloud music 1 1 0 amd64 ubuntu deb 下载好以后 xff0c 执行安装命令
  • 安装 protoc 的各种坑

    首先下载 protoc 2 6 1 https github com google protobuf releases download v2 6 1 protobuf 2 6 1 tar gz https pkgs org downloa
  • 在mysql中创建视图需要使用什么语句_mysql如何创建视图?创建语句是什么?

    在mysql中 xff0c 可以使用 CREATE VIEW 语句来创建视图 xff0c 语法格式为 CREATE VIEW AS xff1b 其中 不能包含FROM子句中的子查询 xff0c 不能引用预处理语句参数 推荐教程 xff1a
  • 正则表达式学习

    1 正则表达式规则 1 1 普通字符 字母 数字 汉字 下划线 以及后边章节中没有特殊定义的标点符号 xff0c 都是 34 普通字符 34 表达式中的普通字符 xff0c 在匹配一个 字符串的时候 xff0c 匹配与之相同的一个字符 举例
  • 在Windows、Mac和 Linux系统中安装Python与 PyCharm

    工欲善其事 必先利其器 xff0c 本文介绍 Python环境的安装和 Python的集成开发环境 IDE PyCharn的安装 一 Python安装 Windows Mac和 Linux 当前主流的 Python版本为2x和3x 由于 P
  • Linux入门-安装篇(Debian 服务器版)

    本文描述了安装一个Linux xff08 Debian xff09 服务器的全过程 xff0c 并附加了一些必要的参考文章 xff0c 通篇以Debian为基础 xff0c 以建立一个服务器 xff08 非桌面环境 xff09 为主要目的
  • MongoDB——写出错机制

    写出错机制 MongoDB的写操作命令默认是没有任何出错返回值的 xff0c 这减少了写操作的等待时间 xff0c 也就是说 xff0c 不管有没有写入到磁盘或者有没有遇到错误 xff0c 它都不会报错 这在大量插 入类似GPS定位坐标信息
  • git入门1

    2016 04 23 19 25 02 参考 xff1a http blog jobbole com 78960 Git bash中运行git log之后怎样终止这个命令 xff0c 按q 再按回车键 清屏 clear 查询用户名 git

随机推荐

  • mysql查看库表的大小_MySQL查看数据库大小和表大小的方法

    MySQL查看数据库大小和表大小的方法 其实很简单 xff0c 就不多说了 xff0c 基本上看得懂代码都明白 查看MySQL数据库大小 SELECT table schema Database Name sum data length 4
  • 按键控制led灯亮灭c语言实验报告,嵌入式STM32学习笔记之按键查询方式控制led灯的亮灭...

    其实接触STM32已经快半年了 xff0c 端断续续的也学习了一下的STM32的各个模块的基本功能 xff0c 刚开始的时候也是看比人的写的代码 xff0c 看懂了然后再去修改 xff0c 能够在自己的平台上实现基本的功能 xff0c 也就
  • iOS 开发比较实用的框架总结(上)

    iOS开发比较实用的框架总结 下拉刷新类型的框架 EGOTableViewPullRefresh https github com enormego EGOTableViewPullRefresh 最早的下拉刷新控件 SVPullToRef
  • Linux使用远程X Server显示图形

    背景 通常我们不希望在服务器上安装图形界面 xff0c 但有时候有些程序需要图形界面 xff0c 比如安装oracle的时候 此时 xff0c 可以配置让Linux使用远程的X Server进行图形界面显示 首先要明确的是Linux X W
  • Linux socket-编程入门(TCP server 端)

    原文完整内容 通常 xff0c socket编程总是Client Server形式的 xff0c 因为有了telnet xff0c 先不考虑client的程序 xff0c 先写一个支持TCP协议的server端 xff0c 然后用telne
  • Anaconda 安装和使用

    最近看了些关于数据分析的书 xff0c 想系统的整理下相关知识 xff0c 算是学习笔记吧 xff0c 也希望能帮到初学者 1 Anaconda介绍 安装python的方法有很多种 xff0c 数据分析方面比较常用Anaconda Anac
  • PTN设备中为什么不支持PHP,ptn和otn的区别是什么

    区别 xff1a OTN是光传输网 xff0c 是从传统的波分技术演进而来 xff0c 主要加入了智能光交换功能 xff0c 可以通过数据配置实现光交叉而不用人为跳纤 xff1b 而PTN是分组传输网 xff0c 是传送网与数据网融合的产物
  • UITableViewController的使用

    如果整个程序界面都只是使用UITableView来搭建 xff0c 一般需要如下步骤 xff1a xff08 1 xff09 向界面上拖一个UITableView xff08 2 xff09 设置数据源 xff08 3 xff09 设置代理
  • MongoDB——explain()和hint()

    explain explain 能够提供大量与查询相关的信息 对于速度比较慢的查询来说 xff0c 这是最重要的诊断工具之一 通过查看一个查询的explain 输出信息 xff0c 可以知道查询使用了哪个索引 xff0c 以及是如何使用的
  • s3c2440之点亮led

    原理是操作led 与 CPU 相连管脚的GPIO xff0c 具体操作哪个GPIO xff0c 需要查看原理图 将对应GPIO配置为输出模式 xff0c 并设置GPIO的对应位为低电平即可点亮led xff0c 相反 xff0c 设置对应位
  • ffmpeg中avframe的YUV格式数据到OpenCV中Mat的BGR格式转换

    ffmpeg实现音视频编解码是非常常用的工具 xff0c 视频解码出来的raw数据是yuv格式 xff0c 用来进行后续的图像处理一般是RGB格式的 所以需要从yuv到rgb或者bgr的转换 xff0c ffmpeg提供了相应的转换API函
  • chrome cookie存在什么地方_谷歌浏览器产生的cookie缓存怎么查看呢?Cookie的具体内容在哪里...

    软件安装 xff1a 谷歌浏览器 装机大全致力于收录最值得您拥有的精品应用 第一时间武装您的电脑变身电脑达人 我们将为您奉上 更贴心的分类方式 无论您喜欢音乐 视频 还是热衷教程 资讯 精准的分类方便您在装机大全中快速找到需要的应用 更简洁
  • KVM虚拟平台搭建使用

    一 KVM虚拟化介绍 KVM 全称 kernel based virtual machine xff0c 由Qumranet公司发起 xff0c 2008年被RedHat收购 KVM实现主要基于Intel V或者AMD V提供的虚拟化平台
  • Ubuntu18.04安装rabbitvcs svn图形化客户端和简单实用

    1 1 自带source源里面查找rabbitvcs信息 sudo apt search rabbitvcs 1 2 安装rabbitvcs sudo apt install rabbitvcs cli rabbitvcs core rab
  • apache2 以及https证书配置

    环境Ubuntu12 04 server 配置 1 xff0c 首先在进入找到 etc apache2 apache2 conf的配置文件 xff0c 里面有包含了较多配置文件的路径如 xff1a httpd conf ports conf
  • python网络请求的库_【Python 模块】 requests 基本使用

    安装 amp 加载pip3 install requests i https mirrors aliyun com pypi simple import requests GET 请求 普通请求 r 61 requests get 39 h
  • centos6.7搭建局域网ntp服务器

    修改 etc ntp conf文件 restrict xxx nomodify notrap nopeer noquery xxx 此处配置本地IP地址 restrict 127 0 0 1 restrict xxx mask 255 25
  • h5-面试题

    干货 各种常见布局实现 43 知名网站实例分析 前端面试考点多 xff1f 看这些文章就够了 xff08 2019年6月更新版 xff09 前端面试 xff1a 这50个经典前端面试题面试者必看 xff01 Vue面试中 xff0c 经常会
  • 导航hover延迟

    function var hoverTimer outTimer 34 nav li 34 hover function var this 61 this clearTimeout outTimer hoverTimer 61 window
  • MongoDB——副本集构建

    复制 MongoDB数据库在实际生产环境下 xff0c 多数基于多服务器集群运行 xff0c 并进行相应的数据分布式处理 因此 xff0c 必须考虑数据读写的可用性和安全性 xff0c 如一台服务器出故障时 xff0c 应该能保证Mongo