MongoDB 创建备份

311 阅读2分钟

这是我参与11月更文挑战的第5天,活动详情查看:2021最后一次更文挑战

要在 MongoDB 中创建备份,最近简单的方法是直接复制文件,或者使用多种备份/管理工具。

有几种方法可以备份 MongoDB 数据库:

复制数据文件

您可以复制 MongoDB 用于存储数据的底层数据文件。这些位于数据目录中。

数据目录的默认位置是 /data/db,但是,如果您使用其他位置,则需要改用该位置。

您应该复制整个目录以进行完整备份。

如果容量支持,您还可以使用快照。例如,在 Linux 上,使用 LVM(# 逻辑卷管理器)创建快照,然后您可以从该快照复制到您的备份站点/远程位置。

mongodump

您可以使用 mongodump 备份数据并使用 mongorestore 恢复它。

要快速备份正在运行的服务器的所有内容,请打开一个新的终端/命令提示符,切换到一个您想要创建 /dump 文件夹的目录,并输入以下内容:

$ mongodump

如果 MongoDB bin 目录不在您的 PATH 中,您将需要提供完整路径。

如果你发现你不能运行 mongoump,确保你已经退出了 mongo 实用程序,或者在运行 mongoump 之前打开了一个新的终端/命令提示符窗口,因为它是一个单独的实用程序。

结果消息:

2021-10-12T15:44:34.467+0700  writing music.artists to 
2021-10-12T15:44:34.467+0700  writing music.musicians to 
2021-10-12T15:44:34.467+0700  writing music.catalog to 
2021-10-12T15:44:34.468+0700  done dumping music.artists (13 documents)
2021-10-12T15:44:34.469+0700  done dumping music.musicians (10 documents)
2021-10-12T15:44:34.469+0700  done dumping music.catalog (10 documents)
2021-10-12T15:44:34.470+0700  writing music.producers to 
2021-10-12T15:44:34.470+0700  writing music.jazz to 
2021-10-12T15:44:34.470+0700  done dumping music.producers (5 documents)
2021-10-12T15:44:34.470+0700  done dumping music.jazz (1 document)
2021-10-12T15:44:34.534+0700  writing test.restaurants to 
2021-10-12T15:44:34.705+0700  done dumping test.restaurants (25359 documents)

可以看到,它创建了一个名为 /dump 的文件,然后是每个数据库的文件夹,然后将所有集合及其元数据转储到相应的数据库文件夹中。我扩展了 music 数据库文件夹以显示该目录中的文件。

请注意,如果备份数据文件夹中存在输出文件,mongodump 会覆盖它们,因此请确保在再次运行 mongodump 之前移动或重命名需要保留的任何文件。

备份单个数据库

您可以通过在 --db 参数中指定数据库的名称来备份单个数据库:

$ mongodump --db=music

备份单个集合

您可以通过在 --collection 参数中指定集合的名称来备份单个集合:

$ mongodump --db=music --collection=artists

指定备份位置

使用 --out 参数指定您希望备份写入的目录:

$ mongodump --db music --out /data/backups

更多选择

mongodump 有更多选项用于指定如何备份数据。您可以随时运行 mongodump --help 以查看哪些选项可用。

恢复 mongodump 备份

您可以 mongodump 通过运行来恢复任何备份 mongorestore。其工作方式与 mongodump

查看 mongorestore --help 更多信息。

mongodumpmongorestore 主要用于较小规模的部署,并为部分备份和基于查询的恢复,同步从生产到登台或开发环境,或改变一个独立的存储引擎。

其他备份方式

对于较大的系统、分片集群或副本集,请使用更强大的备份系统,例如 MongoDB Cloud Manager 或 Ops Manager。

  • MongoDB Cloud Manager 是用于管理 MongoDB 的托管平台。您可以使用 MongoDB Cloud Manager 通过读取 MongoDB 部署中的 oplog 数据来持续备份 MongoDB 副本集和分片集群。
  • Ops Manager 类似于 MongoDB Cloud Manager,不同之处在于它安装在您的本地环境中(即不在云中)。因此,您可以使用它来监控、自动化和备份您的 MongoDB 部署。