如何在Ubuntu 14.04上备份、恢复及迁移MongoDB数据库

Ubuntu 14.04下MongoDB备份恢复与迁移实战指南 MongoDB作为典型的文档型NoSQL数据库,其数据一致性保障依赖于oplog机制、存储引擎特性和文件系统行为。在Ubuntu 14.04这一基于Upstart、默认MMAPv1引擎且缺乏现代工具链的老LTS环境中,直接套用mongodump/mongorestore或rsync会因oplog截断窗口不匹配、UID权限继承异常、journal重放失败等底层差异导致数据丢失或服务不可用。本文聚焦Back Up、Restore、Migrate三大核心场景,解析如何通过冷快照+oplog增量双轨策略,在保证二进 阅读详情

提供:ZStack云计算

MongoDB可谓目前人气最高的NoSQL数据库引擎之一。其凭借着出色的可扩展性、可靠性与易用性征服了无数用户。今天,我们将共同探讨如何备份、恢复及迁移MogoDB数据库。

对数据库进行导入与导出意味着需要以人类可读的格式处理数据,且确保其与其它软件产品相兼容。相比之下,备份与恢复操作则创建或使用MongoDB专用的二进制数据,其不仅能够保护数据本身的统一性与完整性,同时亦拥有独特的MongoDB属性。因此,只要源与目标系统彼此兼容,我们一般更倾向于使用备份与恢复机制。

先决条件

在开始本教程前,大家需要首先参考以下条件:

另外,除了部分特例,所有要求root权限的命令都应以非root sudo用户执行。

相关基础

如果大家了解MySQL等热门关系数据库系统,就会发现MongoDB的使用方式与其非常相似。

在上手MongoDB时,首先要了解的是json与bson(binary json)格式,它们负责对信息进行存储。Json是一种人类可阅读格式,更适用于数据的导出与导入。大家可以利用任何支持json格式的工具进行数据导出,包括文本编辑器。

下面来看json示例文档:

Example of json Format

{"address":[
{"building":"1007", "street":"Park Ave"},
{"building":"1008", "street":"New Ave"},
]}

Json格式易于处理,但却无法支持bson中的全部数据类型。这意味着如果选择使用json,则会发现部分信息“失真”。因此在备份与恢复工作中,我们最好选择二进制bson。

另外,大家不必在创建MongoDB数据库方面下太大功夫。如果大家指定要导入的数据库并不存在,系统会自动进行创建。更重要的是,其采用collection(数据库表)结构。相较于其它数据库引擎,MongoDB的结构能够根据插入的第一个文档(数据库行)自动创建。

第三,MongoDB所读取或者插入的大量数据可能占用大量资源,包括CPU、内存与磁盘空间。在利用MongoDB处理大型数据集及大数据时,这一点必须认真考量。最简单的解决方案就是在夜间或非高峰时段进行数据导出与备份。

第四,如果大家的MongoDB服务器在数据库导出或备份过程中发生信息变更,则可能影响到信息一致性。这一难题没有简单办法可以解决,不过在本文结尾,我们将针对复制操作给出参考资料。

虽然在数据备份与恢复时,导入与导出功能能够实现这一效果,但大家也可以利用其它更好的办法来确保MongoDB数据库的完整性。要对数据进行备份,大家应当使用mongodump命令。而在恢复时,则使用mongorestore。

备份MongoDB数据库

首先来看MongoDB数据库的备份方式。

Mongodump命令的一项重要参数正是–db,其负责指定大家希望备份的数据库名称。如果大家不指定数据库名称,则mongodump会备份全部数据库。第二项为–out,用于指定数据备份至哪个目录。假设我们希望将newdb数据库存储在/var/backups/mongobackups目录下,则备份数据处于/var/backups/mongobackups/01-20-16。首先,使用以下命令创建/var/backups/mongobakcups目录:

  • sudo mkdir /var/backups/mongobackups

备份命令如下所示:

  • sudo mongodump –db newdb –out /var/backups/mongobackups/date +"%m-%d-%y"

成功执行后的输出结果应为:

Output of mongodump

2016-01-20T10:11:57.685-0500    writing newdb.restaurants to /var/backups/mongobackups/01-20-16/newdb/restaurants.bson
2016-01-20T10:11:57.907-0500    writing newdb.restaurants metadata to /var/backups/mongobackups/01-20-16/newdb/restaurants.metadata.json
2016-01-20T10:11:57.911-0500    done dumping newdb.restaurants (25359 documents)
2016-01-20T10:11:57.911-0500    writing newdb.system.indexes to /var/backups/mongobackups/01-20-16/newdb/system.indexes.bson

请注意,我们在前面的目录路径处使用了+”%m-%d-%y”,其会直接获取当前数据,并将其备份至/var/backups/01-20-16/目录当中。这一机制非常适用于自动备份。

现在,大家已经在/var/backups/mongobackups/01-20-16/newdb/目录中拥有了完整的newdb数据库备份。此备份副本包含一切恢复所必需的newdb信息,也就是所谓“保真”。

一般来讲,我们需要对数据库进行定期备份,例如每天一次或者选择服务器负载较低的时段。因此,大家可以将mongodump命令设置为cron任务以定期执行,命令如下:

  • sudo crontab -e

请注意,sudo crontab要求我们以root用户编辑该cron任务。

在crontab提示符下插入以下mongodump命令:

Crontab window

3 3 * * * mongodump --out /var/backups/mongobackups/`date +"%m-%d-%y"`

在以上命令中,我们使用了–db参数以确保全部数据库都能得到备份。

根据MongoDB数据库的具体规模,过为频繁的备份可能导致磁盘空间不足。因此我们需要定期清除旧有备份或者进行压缩。例如通过以下命令每七天删除全部旧有备份:

  • find /var/backups/mongobackups/ -mtime +7 -exec rm -rf {} \;

这条命令也可被添加为cron任务。其应当在开始下一次备份前运行,因此下面再次打开crontab:

  • sudo crontab -e

插入以下行:

Crontab window

3 1 * * * find /var/backups/mongobackups/ -mtime +7 -exec rm -rf {} \;

这样一来,我们就拥有一套理想的MongoDB数据库备份方案。

恢复及迁移MongoDB数据库

在利用以上备份副本实现MongoDB数据库恢复,大家首先需要选取特定时间点的MongoDB信息副本,其中包括全部索引及数据类型。这一点对于希望迁移MongoDB数据库的用户来说特别重要。在恢复MongoDB时,我们需要使用mongorestore命令,其配合由mongodump生成的二进制备份副本共同起效。

仍然以newdb数据库为例,看看如何利用此前的备份副本实现恢复。我们首先使用–db参数指定数据库名称,而后利用–drop确保目标数据库为空。最后,我们在参数中指定最新备份目录/var/backups/mongobackups/01-20-16/newdb/。具体命令如下:

  • sudo mongorestore –db newdb –drop /var/backups/mongobackups/01-20-16/newdb/

成功后的输出结果为:

Output of mongorestore

2016-01-20T10:44:47.876-0500    building a list of collections to restore from /var/backups/mongobackups/01-20-16/newdb/ dir
2016-01-20T10:44:47.908-0500    reading metadata file from /var/backups/mongobackups/01-20-16/newdb/restaurants.metadata.json
2016-01-20T10:44:47.909-0500    restoring newdb.restaurants from file /var/backups/mongobackups/01-20-16/newdb/restaurants.bson
2016-01-20T10:44:48.591-0500    restoring indexes for collection newdb.restaurants from metadata
2016-01-20T10:44:48.592-0500    finished restoring newdb.restaurants (25359 documents)
2016-01-20T10:44:48.592-0500    done

在以上示例中,我们在同一服务器上利用备份副本实现了数据恢复。如果大家希望将数据迁移至其它服务器,则可使用同样的技术,只是将备份目录/var/backups/mongobackups/01-20-16/newdb/复制到另一服务器上。

总结

在本教程中,我们了解了如何对MongoDB数据库进行备份、恢复与迁移。大家也可参阅如何设置可扩展MongoDB数据库一文了解MongoDB的复制操作。

复制功能不仅能够实现可扩展性,同时也有相当重要的现实意义。复制允许我们在继续利用从MongoDB服务器运行MongoDB服务的同时,对主服务器进行恢复。另外,复制功能还可实现操作日志(oplog)机制,其能够记录全部对数据做出修改的操作。大家可以利用该日志对最后一次备份之后的数据进行恢复。备份工作通常在夜间进行,因此如果大家决定利用夜间的备份副本进行恢复,往往会错失大量数据更新。在这种情况下,日志恢复就变得非常重要了。

本文来源自DigitalOcean Community。英文原文:How To Back Up, Restore, and Migrate a MongoDB Database on Ubuntu 14.04 By Anatoliy Dimitrov

翻译:diradw

Ubuntu 20.04下MongoDB备份恢复与迁移实战指南 MongoDB备份不是简单导出数据,而是保障业务连续性的系统工程。其核心原理在于通过物理一致性(如journal刷盘、systemd服务冻结)、逻辑完整性(oplog时间锚定、副本集语义适配)和技术可验证性(结构/数据/业务三层校验)构建可信恢复能力。在Ubuntu 20.04这一广泛使用的LTS环境中,systemd机制、ext4文件系统、NUMA内存架构及glibc版本共同决定了mongodump/mongorestore的行为边界——例如--oplog时间漂移、--noIndexRestore必要性、 阅读详情

相关推荐

Ubuntu 14.04下MongoDB备份的底层原理与避坑实践

MongoDB备份本质是基于快照读取机制的数据一致性保障过程,其核心依赖服务状态、文件系统权限、网络连接及进程资源约束。在Linux系统(尤其是Ubuntu 14.04这类老旧LTS版本)中,mongodump与mongorestore的行为深受Upstart服务管理、ext4文件系统特性、ulimit限制和AppArmor安全策略影响。理解mongodump作为‘快照读取器’的定位,以及mongorestore非原子性恢复的风险,是构建可审计、可回滚备份体系的前提。本文聚焦Ubuntu 14.04 + M

z466459262的专栏 525

实现ubuntu系统中MongoDB数据库自动备份

最近需要对

ai_0922的博客 553

Ubuntu 14.04下MongoDB备份避坑指南:为何不能复制data目录

MongoDB备份本质是保障数据逻辑一致性,而非简单文件拷贝。其核心依赖存储引擎(如WiredTiger或MMAPv1)的事务日志、检查点与元数据协同机制,直接复制data目录会破坏这种强一致性,导致恢复失败。在Ubuntu 14.04这类老旧环境中,问题更突出:默认MongoDB 2.4/2.6版本缺乏现代引擎保护,Upstart进程管理不可靠,且系统级限制(如inodes耗尽、ulimit过低、权限缺失)极易引发mongodump命令未找到或静默失败。因此,必须采用官方推荐的mongodump/mong

weixin_34216196的博客 351

【linux】ubuntu1804安装配置mongodb数据库

【代码】【linux】ubuntu1804安装配置mongodb数据库。

zhangankang的博客 445

Ubuntu 14.04下MongoDB数据导入导出实战指南

MongoDB数据迁移是数据库运维的基础能力,其核心在于理解JSON/CSV格式转换、跨版本兼容性、权限认证机制与数据一致性保障。在Linux系统(尤其是长期服役的Ubuntu 14.04)环境下,mongoimport和mongoexport作为轻量级、无依赖、可审计的命令行工具,承担着冷备份、测试数据供给、合规导出等关键任务。本文聚焦于真实生产约束——老旧操作系统、旧版MongoDB 2.4/2.6、终端编码陷阱、NDJSON格式歧义、时区与日期解析异常等典型问题,结合权限配置、字段筛选、分页导出、流式

497

Ubuntu 14.04下MongoDB导入导出实战指南

MongoDB导入导出是数据库迁移与备份的基础操作,其核心原理在于JSON/CSV格式的数据序列化与反序列化、BSON类型到字符串的映射规则,以及客户端与服务端间的认证与连接协商。技术价值体现在数据一致性保障、跨环境可移植性及低侵入式运维能力。典型应用场景包括老旧系统迁移、离线数据分析、灾备恢复和客户数据交付。在Ubuntu 14.04这一长期支持但已停止维护的发行版上,因MongoDB 2.4/2.6工具链与现代版本存在协议级差异,mongoexport和mongoimport极易出现时间字段失真、Obj

weixin_30420305的博客 399

ubuntu docker 搭建 mongodb,开启授权访问 redis,mysql mssql 备份还原

命令安装docker 如果您想从Ubuntu存储库安装docker版本,则可以运行下面的apt命令。 sudo apt install docker.io 等到安装完成后,您可以启动Docker并使用systemctl命令将其添加到引导时间: systemctl start docker systemctl enable docker 您可能还想检查码头版本: docker --...

dz45693的专栏 2641

Ubuntu 14.04下MongoDB导入导出工具链编译与实战

MongoDB导入导出并非数据库内置功能,而依赖独立的命令行工具链(如mongodump、mongoimport),其本质是松耦合的外部程序,需与服务端版本严格对齐。在已停止维护的Ubuntu 14.04系统中,官方apt源缺失完整工具包,且存在libssl版本冲突、路径混乱、二进制不兼容等典型问题。掌握源码编译mongo-tools(如2.6.12 C++版)能力,成为保障老旧生产环境数据迁移可靠性的关键技术路径。本文聚焦于工具链缺失场景下的离线构建、路径部署、BSON/JSON双模导入导出实践,以及op

weixin_34292402的博客 487

mongodb备份与恢复_unbuntu mongodb 备份恢复

上述使用的root帐号需要提前建立好并且备份需要读的权限,恢复需要读写的权限首先需要创建dba帐号用于管理admin库的users管理之后建立超级管理员的用户创建之前需要db.auth(”dba”,’dba”)认证通过之后才可以创建root帐号。

2401_89872732的博客 967

Ubuntu 14.04下OrientDB文件级备份原理与生产脚本

OrientDB作为多模型数据库,其备份本质是文件系统级一致性快照,而非传统逻辑导出。它依赖database.ocf、.clu、.pci和cluster-0.cpm四类核心文件的完整集合,排除WAL日志以避免重放损坏。在Ubuntu 14.04这一特殊环境中,OpenJDK 7兼容性、upstart初始化机制及ext4文件系统行为共同构成备份风险面。技术价值在于规避freeze卡死、ZIP截断、权限越界等典型故障;典型应用场景包括老旧知识图谱SaaS系统维护、历史数据库迁移及灾备体系建设。本文聚焦Orien

bk_lin的专栏 295

Ubuntu 20.04下MongoDB导入导出实战:BSON归档与JSON保真迁移

MongoDB数据迁移本质是跨环境的数据形态转换问题,核心在于理解BSON(二进制原生格式)与JSON(文本交换格式)在类型系统上的根本差异:BSON完整保留ObjectId、ISODate、NumberLong等15种类型,而JSON默认丢失语义,导致_id失效、日期变字符串等生产事故。Ubuntu 20.04因systemd服务模型、strict权限控制(如ProtectHome)和ufw防火墙,默认行为显著区别于其他系统,使mongodump/mongorestore易静默失败。技术价值在于保障数据一

culi3118的博客 660

在Ubuntu 14.04上如何备份、恢复和迁移MongoDB数据库

MongoDB 是最流行的 NoSQL 数据库引擎之一。它以可扩展、强大、可靠和易于使用而闻名。在本文中,我们将向您展示如何备份、恢复和迁移您的 MongoDB 数据库。导入和导出数据库意味着处理以人类可读格式存储的数据,与其他软件产品兼容。相比之下,备份和恢复操作创建或使用特定于 MongoDB 的二进制数据,这不仅保留了数据的一致性和完整性,还保留了其特定的 MongoDB 属性。因此,对于迁移,通常最好使用备份和恢复,只要源系统和目标系统是兼容的。

rubys007的博客 1237

Ubuntu 20.04下MongoDB导入导出生产级实践指南

MongoDB导入导出不仅是命令执行,更是数据模型、序列化机制与系统环境的协同工程。其核心在于理解mongodump/mongorestore(BSON逻辑备份,保真ObjectId/Date/索引)与mongoexport/mongoimport(JSON/CSV结构交换,牺牲语义换通用性)的本质差异。在Ubuntu 20.04环境中,systemd服务管理、ulimit文件描述符限制、locale编码设置等底层约束,会静默破坏数据一致性与完整性。掌握工具选型决策树、权限认证配置、oplog增量支持及UT

weixin_33738982的博客 294

Ubuntu 14.04下MongoDB备份避坑指南:为什么不能用cp/rsync

MongoDB备份本质是获取数据库在某一时刻的一致性状态,而非简单复制文件。其核心原理依赖存储引擎(如mmapv1)的事务日志(journal)与数据文件强一致性,以及oplog机制保障副本集数据同步。技术价值在于实现RPO≈0的可靠恢复能力,避免静默数据丢失。典型应用场景包括老旧系统(如Ubuntu 14.04)迁移、灾备演练和生产环境定期备份。本文聚焦mmapv1引擎下cp/rsync导致journal错位、索引损坏等风险,并详解mongodump/mongorestore配合--oplog、--dro

weixin_34152820的博客 407

MongoDB的导入导出、备份恢复总结

Mongodb中的mongoexport工具可以把一个collection导出成JSON格式或CSV格式的文件。可以通过参数指定导出的数据项,也可以根据指定的条件导出数据。mongoexport具体用法如下所示: 参数说明:示例:导出集合articles,字段 _id,author,dave,score,views 1.2 数据导入 mongoimport mongoimport具体用法如下所示: 参数说明:示例:导入集合articles_import,字段 _id,author,dave,score,vi

数据知道的博客 3万+

手把手教你用8位单片机IO口直接驱动WS2812灯带(附完整代码和避坑指南)

本文详细介绍了如何使用8位单片机IO口直接驱动WS2812灯带,包括硬件准备、时序生成、色彩引擎与特效算法的实现,以及调试技巧与性能优化。通过汇编语言优化和精确时序控制,实现高效的LED驱动和炫酷的彩虹灯效,适合嵌入式开发者和硬件爱好者参考。

weixin_42696271的博客 304

在Ubuntu 14.04上如何导入和导出MongoDB数据库

MongoDB 是最流行的 NoSQL 数据库引擎之一。它以可扩展、强大、可靠和易于使用而闻名。在本文中,我们将向您展示如何导入和导出您的 MongoDB 数据库。我们应该明确指出,在本文中,通过导入和导出,我们指的是处理以人类可读格式存储的数据,这种格式与其他软件产品兼容。相比之下,备份和恢复操作创建或使用特定于 MongoDB 的二进制数据,这不仅可以保持数据的一致性和完整性,还可以保留其特定的 MongoDB 属性。因此,对于迁移,通常最好使用备份和恢复,只要源和目标系统是兼容的。

rubys007的博客 1045

UUVsimulator仿真

pub -r 10 /cmd_vel geometry_msgs/Twist控制运动没有反应。通过键盘控制运动,接收不到/cmd_vel消息。

Fatal__的博客 4608

入门系列之在Ubuntu 14.04上备份,还原和迁移MongoDB数据库

欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由信姜缘 发表于云+社区专栏 MongoDB是最受欢迎的NoSQL数据库引擎之一。它以可扩展,强大,可靠和易于使用而闻名。在本文中,我们将向您展示如何备份,还原和迁移MongoDB数据库。 导入和导出数据库意味着以人类可读的格式处理数据,与其他软件产品兼容。相反,备份和还原操作创建或使用特定于MongoDB的二进制数据...

QcloudCommunity的博客 350

如何在INCA中修改标定量的初始值,并刷回控制器

测试过程中,有些时候,标定量来不及修改,这就需要修改标定量的初始值了,又不想打开模型重新编译,因此直接在INCA中修改,然后再刷回控制器,就成了最佳选择,之前也学过,长时间不用,忘记怎么搞了,最近又用到了,这次记录一下,以后用到的时候,就不用在网上东翻西找了。截止到2023年11月24日,共找到了两种方法可以实现修改。

weixin_43406519的博客 4204

麒麟V10 SP3国产化环境部署MySQL 8.0全流程实战

本文详细介绍了在国产化操作系统麒麟V10 SP3上部署MySQL 8.0的全流程实战指南。从环境准备、冲突排查到安装包处理、服务配置与安全加固,提供了详细的命令和技巧,帮助用户顺利完成MySQL 8.0的部署与优化,适用于国产化环境下的数据库应用。

weixin_29231027的博客 274
上一篇: 如何利用OpenLDAP工具管理并使用LDAP Server
下一篇: HAProxy与负载均衡概念介绍
普通网友
博客等级 码龄10年 769粉丝 269原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值