百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

如何在MongoDB上备份和恢复数据?

itomcoil 2025-08-02 18:47 4 浏览

在大数据时代,企业的应用带来了大量的数据,它们可能具有结构化、半结构化或非结构化的性质。此外,应用程序开发周期短和可用性强都是他们要考虑的关键问题。考虑到这些应用程序的要求,在下一代平台3应用程序中,企业必须超越传统的关系数据库(IaaS或基于云计算PaaS)。在NoSQL数据库中,像MongoDB现在就被采用了,同时又对这些下一代应用程序的企业进行了评估(如电子商务、内容管理等)。MongoDB提供了动态模式,通过自动分片易扩展、读写一致性和在内置中进行复制的功能。

MongoDB数据库具有本地复制的功能,同时满足可用性的需求。然而,数据保护要求可伸缩的时间点备份和恢复需要得到很好的解决。对于可靠的数据保护,企业需要备份和复制!没有时间点的备份,组织会由于人为的错误、逻辑混乱和其他操作的失败导致有丢失数据的风险。传统的备份解决方案是建立在关系数据库中,使用共享存储和ACID事务模型,来解决结构化平台2应用程序的要求而建的。不幸的是,他们不足以解决平台 3 应用程序和分布式的数据库(本地存储、 最终一致性和基础设施的弹性性质)的时间点备份要求。有几个备用的基于脚本的解决方案(例如地层等),企业正在使用填补数据来保护缩短差距,但这些解决方案充其量算是次优的。

手动脚本解决方案

这些解决方案利用本地MongoDB快照工具和脚本将数据传输到辅助存储。(通过 mongodump) 脚本自定义的每个 MongoDB 集群和需要业务作出了重大努力,以适应任何拓扑更改 (例如添加或删除节点到 MongoDB 数据库) 或扩大规模。此外,这些脚本不适应失败场景,比如失败的一个节点(一级或二级)或间歇性的网络问题。最后,恢复(“备份”)的最重要的价值是一个手动过程。因此,耗费时间(导致很高的应用程序停机时间),并包含脚本中的任何 bug 数据丢失风险。总的来说,这些解决方案工作在MongoDB环境中很小和一些允许在应用程序中丢失的数据。这些解决方案所面临的一些关键问题是:

  • 对分片配置的企业备份解决方案的不足;
  • 当快照被取时,数据库需要脱机;
  • 在节点故障和其他基础设施故障下,备份和恢复都失败了;
  • 恢复过程是手动的并且需要验证,从而增加恢复时间;
  • 收集级的恢复需要耗时的手动恢复;
  • 恢复与不同的测试/开发的拓扑(切分 → 分片)刷新是不可用的。

MongoDB支付备份和恢复(又名“MMS”)

MongoDB(公司)本身提供了一些备份MongoDB数据库的方法。企业可以选择从一个管理备份提供(MMS)运行在公共云,或如果他们支付 MongoDB 的客户,他们可能以部署本地备份服务为前提。除了成本过高,在公共云上管理备份服务存储的客户数据。对于部署 MongoDB 为前提,在 WAN 上备份数据传输可能无法为客户工作,并且海需要为客户保持他们对数据内部的敏感度。此外,还有重要的数据来限制每个碎片去使用这项服务。

使用MongoDB部署备份服务是有可能的,但部署和实施过于复杂。企业需要部署8台服务器,附加数据库(额外的许可证)和 6-9x存储容量。总的来说,部署备份服务是一个理论上的解决方案,带来了显著的CAPEX和OPEX投资:

  1. 部署多个数据库的复杂性;
  2. 额外的基础设施成本;
  3. 授权额外的MongoDB节点成本;
  4. 当节点失败时,带来备份失败的风险;
  5. 独立的MongoDB数据库备份基础设施。

实现企业客户的数据保护要求,进入了新兴的下一代分布式数据库的时代(键值、图形、文档库等),并且解决上述方案的局限性。Datos IO建造了产业界首次扩展数据保护软件产品,使平台3应用程序能部署到分布式和云数据库上,如MongoDB和Apache Cassandra。Datos IO解决方案是刚刚兴起的下一代应用程序,迎合了业主和DevOps的应用需求,并解决了部署和管理保护基础设施操作所带来的一切麻烦。最重要的是,它是一个可靠的和可扩展的解决方案,即使在使用节点失败的场景下,也会通过最小化恢复时间获得最优的性能。

相关推荐

python学习教程-第七节内容

函数(重点)基本概念Python函数的语法是编程中的核心概念之一,它允许你将代码块封装为可重复调用的单元。基本语法定义函数:示例参数类型位置参数(PositionalArguments)按参数定义...

Python排序90%人只会用sorted()?这7个高阶技巧让你代码效率翻倍

高效处理数据的关键,往往从掌握排序开始。排序操作在Python编程中的重要性常被低估——直到你面对一个杂乱无章的数据集。作为数据处理的核心操作之一,排序效率直接决定了程序性能和代码可读性。无论你正在清...

第四章:Python函数

4.1函数的定义与调用4.1.1理论知识函数是组织好的、可重复使用的代码块,用于执行特定的任务。它可以提高代码的复用性和可维护性。在Python中,定义函数使用def关键字,其基本语法如下:def...

ArcGIS 一个独立运行的Python程序编写和打包

写代码#coding=utf8#-*-coding:UTF-8-*-importarcpyfromarcpyimportenvimportosimportsys##########...

python入门到脱坑经典案例—计算三角形的面积

下面为大家详细讲解如何用Python计算三角形面积。我们会从最基础的数学公式开始,逐步深入编程实现,并涵盖多个实用版本。以下是完整的教学指南:1.数学原理回顾三角形面积公式:面积=(底边长度...

Python运算技巧:10种计算列表平方的高效方法

1.使用for循环此方法遍历列表中的每个数字,使用**运算符计算其平方,然后将结果添加到新的列表中。2.使用列表推导式此方法使用列表推导式,这是一种更简洁的方式,可以在现有列表的每个项目上执行操作...

墙裂推荐,5个学习Python编程最佳的开源库

学习Python少不了的就是项目,我在GitHUB上找了几个比较好的开源库,大家可以跟着去学习。1、learn-python3这个存储库一共有19本Jupyter笔记本。它涵盖了字符串和条件之类的基础...

使用Python玩转ftplib库:实现ftp文件传输自动化全攻略

大家好!在日常工作中都会使用到ftp功能,用于上传和下载文件等,本章主要介绍Python的标准库ftplib来实现FTP文件传输,帮助我们实现ftp自动化。一、ftplib库核心函数速查表1连接与登...

Python零基础入门学习23:常用第三方库之图像处理库Pillow

注:本文所有代码均经过Python3.7实际运行检验,保证其严谨性。本文约2000字,阅读时间约为4分钟。Pillow库的概述Pillow库是Python最好的图像处理库,可能是使用频率最高的图像处...

Python编程之BeautifulSoup库

#头条创作挑战赛#BeautifulSoup是一个可以从HTML或XML文件中快速提取数据的Python库。它能够通过转从入门到精通Python网络爬虫框架Scrapy38换器实...

Python3 新一代Http请求库Httpx使用(详情版)

我们经常使用Python语言的朋友们都清楚,requests是使用率非常高的HTTP库,甚至更早Python2中使用的是urllib、urllib2,也给我们提供了许多方便的功能。但是自从...

小白也可以玩的Python爬虫库,收藏一下

最近,微软开源了一个项目叫「playwright-python」,作为一个兴起项目,出现后受到了大家热烈的欢迎,那它到底是什么样的存在呢?今天为你介绍一下这个传说中的小白神器。Playwright是...

apscheduler,一个超厉害的 Python 库!

大家好,今天为大家分享一个超厉害的Python库-apscheduler。Github地址:https://github.com/agronholm/apschedulerAPSchedule...

给3D Slicer添加Python第三方插件库

对临床医生或医学影像算法研究人员来说,3DSlicer是不错的临床实践或科研工具。随着人工智能和深度学习技术的普及,python已经作为原型开发和验证的计算机编程语言。3DSlicer自带pyt...

Paramiko:一个非常实用的Python库

前言Python的Paramiko库,它是一个用于实现SSHv2协议的客户端和服务器的库。通过使用Paramiko,我们可以在Python程序中轻松地实现远程服务器的管理、文件传输等功能。特别做智能硬...