MongoDB教程-5

news2024/12/27 12:54:20

复制是跨多个服务器同步数据的过程。复制在不同的数据库服务器上提供数据的多个副本,从而提供冗余并提高数据可用性。复制可防止数据库丢失单个服务器。复制还允许您从硬件故障和服务中断中恢复。通过增加数据拷贝,您可以将其中一个用于灾难恢复、报告或备份。

为什么选择复制?


确保数据安全
高(24*7)数据可用性
灾难恢复
无需停机进行维护(如备份、索引重建、压缩)
读取缩放(要读取的额外副本)
副本集对应用程序透明


MongoDB中的复制工作原理


MongoDB通过使用副本集实现复制。副本集是承载相同数据集的一组mongod实例。在副本中,一个节点是接收所有写入操作的主节点。所有其他实例(如辅助实例)都从主实例应用操作,以便它们具有相同的数据集。副本集只能有一个主节点。
副本集是由两个或多个节点组成的组(通常至少需要3个节点)。
在副本集中,一个节点是主要节点,其余节点是次要节点。
所有数据都从主节点复制到辅助节点。
在自动故障切换或维护时,将为主节点建立选择,并选择新的主节点。
故障节点恢复后,它将再次加入副本集并作为辅助节点工作。

图中显示了MongoDB复制的典型示意图,其中客户端应用程序始终与主节点交互,然后主节点将数据复制到辅助节点。

副本集功能


N个节点的群集
任何一个节点都可以是主节点
所有写入操作都转到主
自动故障切换
自动恢复
初选共识选举


设置副本集


在本教程中,我们将把独立的MongoDB实例转换为副本集。要转换为副本集,请执行以下步骤−
关闭已运行的MongoDB服务器。
通过指定--replSet选项启动MongoDB服务器。以下是--replSet−的基本语法

mongod --port "PORT" --dbpath "YOUR_DB_DATA_PATH" --replSet "REPLICA_SET_INSTANCE_NAME"

例子:

mongod --port 27017 --dbpath "D:\set up\mongodb\data" --replSet rs0

它将在端口27017上启动一个名为rs0的mongod实例。
现在启动命令提示符并连接到这个mongod实例。
在Mongo客户端中,发出命令rs.initiate()以启动新的副本集。
若要检查副本集配置,请发出命令rs.conf()。若要检查复制集的状态,则发出命令rs.status()。


将成员添加到副本集


要将成员添加到副本集,请在多台计算机上启动mongod实例。现在启动mongo客户端并发出命令rs.add()。
语法
rs.add()命令的基本语法如下−

>rs.add(HOST_NAME:PORT)

实例
假设您的mongod实例名为mongod1.net,并且它在端口27017上运行。要将此实例添加到副本集,请在Mongo客户端中发出命令rs.add()。

>rs.add("mongod1.net:27017")
>

只有连接到主节点时,才能将mongod实例添加到副本集。要检查您是否连接到主服务器,请在mongo客户端中发出命令db.isMaster()。

共享是跨多台机器存储数据记录的过程,是MongoDB满足数据增长需求的方法。随着数据大小的增加,单个机器可能不足以存储数据,也不能提供可接受的读写吞吐量。切分解决了水平缩放的问题。通过分片,您可以添加更多的机器来支持数据增长以及读写操作的需求。


为什么要分片?


在复制中,所有写操作都将转到主节点
延迟敏感的查询仍将转到主机
单个副本集限制为12个节点
当活动数据集很大时,内存不够大
本地磁盘不够大
垂直缩放太昂贵


MongoDB中的分片


下图显示了MongoDB中使用分片集群的分片。

在下图中,有三个主要部件−
分片——分片用于存储数据。它们提供了高可用性和数据一致性。在生产环境中,每个分片都是一个单独的副本集。
配置服务器—配置服务器存储集群的元数据。该数据包含集群数据集到分片的映射。查询路由器使用此元数据将操作定向到特定分片。在生产环境中,分片集群正好有3个配置服务器。
查询路由器——查询路由器基本上是mongo实例,与客户端应用程序接口,并将操作引导到适当的分片。查询路由器处理操作并将其目标定位到分片,然后将结果返回给客户端。一个分片集群可以包含多个查询路由器来划分客户端请求负载。客户端向一个查询路由器发送请求。通常,分片集群有许多查询路由器。

转储MongoDB数据
要在MongoDB中创建数据库备份,应该使用mongodump命令。此命令将服务器的全部数据转储到转储目录中。有许多选项可用于限制数据量或创建远程服务器的备份。
语法
mongodump命令的基本语法如下−

>mongodump

实例
启动mongod服务器。假设您的mongod服务器运行在本地主机和端口27017上,打开命令提示符并转到mongodb实例的bin目录,然后键入命令mongodump
考虑mycol集合具有以下数据。

>mongodump

该命令将连接到运行在127.0.0.1和端口27017的服务器,并将服务器的所有数据备份到/bin/dump/目录。以下是命令−的输出

以下是可用于mongodump命令的可用选项列表。

语法描述例子
mongodump --host HOST_NAME --port PORT_NUMBER此命令将备份指定mongod实例的所有数据库。mongodump --host tutorialspoint.com --port 27017
mongodump --dbpath DB_PATH --out BACKUP_DIRECTORY此命令将仅备份指定路径上的指定数据库。mongodump --dbpath /data/db/ --out /data/backup/
mongodump --collection COLLECTION --db DB_NAME此命令将仅备份指定数据库的指定集合。mongodump --collection mycol --db test

还原数据
为了恢复备份数据,使用MongoDB的mongorestore命令。此命令从备份目录中恢复所有数据。
语法
mongorestore命令的基本语法是−

>mongorestore

以下是命令−的输出

在准备MongoDB部署时,您应该尝试了解应用程序在生产中的表现。开发一种一致的、可重复的方法来管理您的部署环境是一个好主意,这样您就可以在投入生产后将任何意外情况降至最低。
最好的方法包括对设置进行原型设计、进行负载测试、监控关键指标,并使用这些信息来扩展设置。该方法的关键部分是主动监控整个系统—这将帮助您了解生产系统在部署之前的运行状况,并确定需要在哪里增加容量。例如,深入了解内存使用量的潜在峰值可能有助于在写锁起火之前将其扑灭。
为了监控您的部署,MongoDB提供了以下一些命令—

mongostat

该命令检查所有正在运行的mongod实例的状态和数据库操作的返回计数器。这些计数器包括插入、查询、更新、删除和游标。命令还显示您遇到页面错误的时间,并显示锁定百分比。这意味着内存不足、写容量不足或存在一些性能问题。
要运行该命令,请启动mongod实例。在另一个命令提示符中,转到mongodb安装的bin目录并键入mongostat。

D:\set up\mongodb\bin>mongostat

以下是命令−的输出

 

mongotop

该命令跟踪并报告MongoDB实例在集合基础上的读写活动。默认情况下,mongotop每秒返回信息,您可以相应地更改信息。您应该检查此读写活动是否符合您的应用程序意图,并且一次不会对数据库进行过多的写入,不会频繁地从磁盘读取数据,也不会超过您的工作集大小。
要运行该命令,请启动mongod实例。在另一个命令提示符中,转到mongodb安装的bin目录并键入mongotop。 

D:\set up\mongodb\bin>mongotop

 若要更改mongotop命令以减少返回信息的频率,请在mongoop命令后指定一个特定的数字。

D:\set up\mongodb\bin>mongotop 30

上面的示例将每30秒返回一次值。
除了MongoDB工具之外,10gen还提供了一个免费的托管监控服务MongoDB管理服务(MMS),该服务提供一个仪表板,并为您提供整个集群的指标视图。

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

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

相关文章

Spring系列4 -- Bean的作用域和生命周期

目录 1. 案例 2. 作用域定义 2.1 Bean的6种作用域 2.2 设置作用域 3. Sring的执行流程 4. Bean的生命周期 思考: 为什么不是先进行初始化然后再进行设置属性呢? 1. 案例 假设现在有⼀个公共的 Bean,提供给 A ⽤户和 B ⽤户使⽤,然⽽在使⽤的途中…

【面试】Hbase

逻辑模型 1 NameSpace 命名空间,类似于关系型数据库的database概念,每个命名空间下有多个表。Hbase有两个自带的命名空间,分别是hbase和default, hbase中存放的是HBase内置的表, default表是用户默认使用的命名空间。 2 Region 类似于关系型数据库的表…

综合 案例

案例1:淘宝焦点图布局 基本结构 1.大盒子我们类名为: tb-pro淘宝广告 2.里面先放一张图片 3.左右两个按钮用链接。左箭头prev 右箭头 next 4.底侧小圆点用ul 类名为pro-nav 注意: 1.如果一个盒子既有left属性也有right属性,则默认会执行lef…

Nvidia Jetson Orin系列配置教程

Nvidia Jetson Orin系列配置教程包含Orin系列的安装及配置办法,目前最为推荐的办法是通过Nvidia SDK Manager进行安装,详细内容如下: 法1:通过Nvidia SDK Manager进行安装 1.下载工具 前往Nvidia SDK Manager下载工具 2.安装工…

Lesson3-3:OpenCV图像处理---图像平滑

图像平滑 学习目标 了解图像中的噪声类型了解平均滤波,高斯滤波,中值滤波等的内容能够使用滤波器对图像进行处理 1 图像噪声 由于图像采集、处理、传输等过程不可避免的会受到噪声的污染,妨碍人们对图像理解及分析处理。常见的图像噪声有高…

MySQL之CRUD及常见面试题讲解

目录 一、CRUD是什么 二、什么是SQL注入 三、行转列的使用 四、CRUD中常用关键词 关键词: GROUP BY HAVING ORDER BY 五、聚合函数和连表查询 聚合函数 连表查询 六、DELETE、TRUNCATE、DROP的区别 七、MySQL常见面试题讲解 一、CRUD是什么 CRUD是一个常…

ARMv8的异常等级(Exception Level)以及执行状态(AArch64/AArch32)

目录 1&#xff0c;异常等级&#xff08;Exception Level&#xff09; 2&#xff0c;Execution states&#xff0c;执行状态 AArch64的异常等级 AArch32的异常等级 3&#xff0c;异常等级切换 4&#xff0c;执行状态切换&#xff08;AArch64 <> AArch32&#xff09;…

文件下载功能(简单粗暴)

文件下载功能 // 模板下载 export const modelLoadInterface (data: any) > {return get<Response>(tsureexapp-exchange/config/points/grant/export.json, data, {skipErrorHandler: true,}); };import {modelLoadInterface} from "/services/CommunicationF…

山西电力市场日前价格预测【2023-07-11】

日前价格预测 预测明日&#xff08;2023-07-11&#xff09;山西电力市场全天平均日前电价为419.66元/MWh。其中&#xff0c;最高日前价格为490.80元/MWh&#xff0c;预计出现在11: 45。最低日前电价为365.06元/MWh&#xff0c;预计出现在24: 00。 价差方向预测 1&#xff1a;实…

关于Xxl-job执行器自动注册不了的问题

最近项目里面用到了xxljob&#xff0c;然后按照官方文档自己搭建了一个&#xff0c;发现一个问题&#xff0c;就是执行器自动注册不了&#xff0c;然后一顿百度&#xff0c;发现是这个配置的问题&#xff1a; 这个 xxl.job.executor.appname 是执行器的名称&#xff0c;是要和页…

Jenkisn远程执行Shell命令

Jenkisn远程执行gating 1、安装插件 SSH plugin** 系统管理Manage Jenkins->管理插件Plugin Manager->搜索SSH plugin并安装 2、配置 Credentials凭据 系统管理Manage Jenkins->凭据插件Manage Credentials-> 凭据的类型有很多&#xff0c;本次学习用户名与密…

关于Arduino UNO R3主控板(CH340)驱动问题

网上买了一个Arduino UNO R3的标准版产品&#xff0c;开始学习智能编程工具。主要是给小孩子提高一点兴趣爱好&#xff0c;还有就是想在创客实验方面找点素材。 问题&#xff1a; 刚拆包安装驱动遇到一个问题&#xff0c;按说明装了Arduino UNO R3主控板驱动&#xff0c;但就是…

这所院校学硕年年国家线,8人过线,全部录取!保护一志愿!

一、学校及专业介绍 山东科技大学&#xff0c;简称“山科大&#xff0c;SDUST”&#xff0c;山东省重点建设应用基础型人才培养特色名校和高水平大学“冲一流”建设高校。&#xff08;我也第一次听说冲一流这个概念图片&#xff09; 1.1 招生情况 山东科技大学通信2023年一共…

【正点原子STM32连载】第五十三章 照相机实验摘自【正点原子】STM32F103 战舰开发指南V1.2

1&#xff09;实验平台&#xff1a;正点原子stm32f103战舰开发板V4 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id609294757420 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html# 第五…

【大学生自动化测试基础selenium】pageObjece

目录 目录 base_page层 common层 read_data.py send_email.py test_log.py page层 page_ECShop_Login.py testcase层 conftest.py test_login.py venv层 pytest.ini run.tests.py requirements.txt 目录 base_page层 # basepage 基础页面层&#xff08;基类&am…

算法leetcode|61. 旋转链表(rust重拳出击)

文章目录 61. 旋转链表&#xff1a;样例 1&#xff1a;样例 2&#xff1a;提示&#xff1a; 分析&#xff1a;题解&#xff1a;rust&#xff1a;go&#xff1a;c&#xff1a;python&#xff1a;java&#xff1a; 61. 旋转链表&#xff1a; 给你一个链表的头节点 head &#xf…

Mysql-------SQL:DDL数据定义语言、DDM数据操作语言、DQL数据库查询语言、DQL数据控制语言

MySQL MySQL是一个关系型数据库管理系统&#xff0c;其数据是保存在不同的数据表中&#xff0c;而不是将所有数据放在一个大仓库内&#xff0c;这样就增加了速度并提高了灵活性 SQL MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言&#xff0c; SQL语言可以分为&am…

JDY-31 蓝牙传输模块的使用、调试和传输

JDY-31 蓝牙基于蓝牙 3.0 SPP 设计&#xff0c;这样可以支持 Windows、Linux、android 数据透传&#xff0c; 工作频段 2.4GHZ&#xff0c;调制方式 GFSK&#xff0c;最大发射功率 8db&#xff0c;最大发射距离 30 米&#xff0c;支持用户通过 AT 命令修改设备名、波特率等指令…

java商城 开源java电子商务Spring Cloud+Spring Boot+mybatis+MQ+VR全景+b2b2c

1. 涉及平台 平台管理、商家端&#xff08;PC端、手机端&#xff09;、买家平台&#xff08;H5/公众号、小程序、APP端&#xff08;IOS/Android&#xff09;、微服务平台&#xff08;业务服务&#xff09; 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、Redis 3. 前端框架…

Mybatis动态SQL解析:XML配置如何变成最终的Sql语句?

简介 动态SQL是Mybatis的一项核心功能&#xff0c;通过一份静态的XML配置 外部参数&#xff0c;动态生成最终的SQL语句&#xff0c;可以用很少的理解成本配置复杂条件的动态SQL&#xff0c;摆脱各种处理逗号、空格这些细枝末节的痛苦。 标签说明 要实现动态拼接SQL&#xf…