这是我参与11月更文挑战的第5天,活动详情查看:2021最后一次更文挑战
要在 MongoDB 中创建备份,最近简单的方法是直接复制文件,或者使用多种备份/管理工具。
有几种方法可以备份 MongoDB 数据库:
- 复制数据文件
- 使用
mongodump - 使用 MongoDB Cloud Manager 和 Ops Manager
复制数据文件
您可以复制 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 更多信息。
mongodump 与 mongorestore 主要用于较小规模的部署,并为部分备份和基于查询的恢复,同步从生产到登台或开发环境,或改变一个独立的存储引擎。
其他备份方式
对于较大的系统、分片集群或副本集,请使用更强大的备份系统,例如 MongoDB Cloud Manager 或 Ops Manager。
- MongoDB Cloud Manager 是用于管理 MongoDB 的托管平台。您可以使用 MongoDB Cloud Manager 通过读取 MongoDB 部署中的 oplog 数据来持续备份 MongoDB 副本集和分片集群。
- Ops Manager 类似于 MongoDB Cloud Manager,不同之处在于它安装在您的本地环境中(即不在云中)。因此,您可以使用它来监控、自动化和备份您的 MongoDB 部署。