创建数据库的 MongoDB 转储
-
MongoDB 中的
mongodump
命令 -
使用
mongodump
命令创建数据库的 MongoDB 转储 -
使用
mongodump
命令创建所有数据库的 MongoDB 转储 -
使用
mongorestore
命令恢复 Mongo 数据库 - 结论
在本 MongoDB 教程中,你将获得 Mongodump
和 Mongorestore
的演练,如何使用它们,以及使用这两种工具备份和恢复你的集合的一些简单示例。
MongoDB 中的 mongodump
命令
Mongodump 是一个从数据库内容创建二进制导出的工具。此工具支持 mongod
和 mongos
实例。
用户可以使用 Mongodump 从独立、副本、集合和分片集群安装中导出数据。
Mongodump 曾经定期更新,每当 MongoDB 服务器升级时都会提供新版本。但是,该实用程序自 MongoDB 4.4 以来就已进行了版本控制。当前版本 100.2.1 支持 MongoDB 3.6、4.0、4.2 和 4.4。
即使支持所有以前版本的 MongoDB,Mongodump 也可能不完全兼容它们。该小工具充当备用计划。
如果 IT 专业人员想要计划备份(集合),这是他们每天备份和恢复数据库的一种方法。例如,Mongodump 可以将所有内容保存在一个文件中,并且以后可以使用 Mongorestore 来完全恢复数据库。
我们可以从系统命令行而不是 mongo shell 执行 mongodump
命令。mongodump
命令结构如下:
mongodump <options> <connection-string>
-uri
和正确结构化的字符串或标志选项,如 -user
、-db
和 -password
可用于连接到 mongo 数据库。不幸的是,用户不能将两个不同的命令合并为一个。
使用 mongodump
命令创建数据库的 MongoDB 转储
mongodump
可以使用 localhost 使用以下命令转储名为 database1
的集合,使用 URI 格式和用户信息。
- 数据库名称:
database1
- 用户名:
user123
- 密码:
mydatabse123
mongodump --uri="mongodb://uberuser:mydatabse123@localhost:27107/database1?ssl=false&authSource=admin"
使用标准标志的 mongodump
命令的另一个示例如下所示:
mongodump --user=uberuser --db=database1 --password=mydatabse123 --authenticationDatabase=admin
数据库备份也可以保存为存档文件。相比之下,将文件转储到目录中并不好。
这些选择用于切换服务器或跨主机传输数据。 -archive
选项允许用户提供存档的名称。
此选项生成一个文件,该文件可以使用 Mongorestore.
重新导入数据库。
如果数据库的名称与要转储的数据库相同,请使用正确名称的 -authenticationDatabase
标志。使用 URI 时,请确保 authSource
组件链接到正确的数据库。
典型的 mongodump
方法将整个数据库转储到单个转储目录中,默认情况下命名为 dump.
。该目录将在我们运行命令的同一目录中创建。
数据库将以目录中的子文件夹命名。在前面的示例中,这将是 database1
;因此,新结构将是 ./dump/database1.
相应文件夹中的数据库集合将有两个单独的文件——一个 BSON 和一个 JSON 文件。
.metadate.json
文件将遵循类似的结构,包含诸如 options,
indexes,
和 ns
之类的元数据以匹配集合的命名空间。BSON 文件中的 .bson
文件将保留集合的数据。
用户可以在 mongodump.
中自定义输出的特定行为。
可以在转储目录中使用诸如 -out
之类的标志来提供应转储数据库的目录名称。例如,转储目录可以称为 dumbbase.
,而不是转储。
下面是命令的显示方式。
mongodump --user=user123 --db=database1 --password=mydatabse123 --authenticationDatabase=admin --out=dumbbase
默认情况下,所有集合都转储到输出文件夹中。文件夹的名称将被添加到数据库中。
用户可以通过一次仅备份一个集合来进一步限制实用程序的功能。用户可以使用 -collection
参数指定要转储的集合。
如果只转储行动人物
集合,则示例 mongodump
命令将是:
mongodump --user=user123 --db=database1 --password=mydatabse123 --authenticationDatabase=admin --out=dumbbase --collection=action_figures
我们还可以使用命令创建以下文件夹结构:
.
|_dumbbase
|_database1
|_action_figures.metadata.json
|_action_figures.bson
可以根据用户需要多次使用该命令一次备份一个集合。这些说明不会覆盖输出文件夹的内容。
下面是将 older
集合添加到转储文件夹的示例。
Mongodump --user=user123 --db=database1 --password=mydatabse123 --authenticationDatabase=admin --out=action_figures --collection=older
database/database1
文件夹将使用附加的 older.metadata.json
和 older.bson
文件创建,其结构如下所示:
.
|_action_figures
|_database1
|_action_figures.metadata.json
|_action_figures.bson
|_older.metadata.json
|_older.bson
使用 mongodump
命令创建所有数据库的 MongoDB 转储
备份和归档所有文件也是可行的。
将所有内容清空到转储目录不是一个好主意。此选项最有助于在主机之间移动数据或在服务器之间传输备份文件。
它使用 -archive
开关允许用户命名存档文件。此选项生成一个文件,我们可以使用 mongorestore
重新导入数据库。
因此,用户不能同时使用 -archive
和 -out
选项。
mongodump
命令将转储以下示例中的所有数据库(集合):
mongodump --db=database1 --username=uberuser --password=mydatabse123 --authenticationDatabase=admin --archive=database1.archive
使用 mongorestore
命令恢复 Mongo 数据库
mongorestore
程序与 mongodump
完全相反,允许用户恢复数据库。应用程序从二进制数据库转储或 Mongodump 工具中读取数据。
mongorestore
与 mongoimport
不同,因为它只是插入数据。
应用程序无法替换数据库中的现有文档。它包含任何必要的升级。
如果文档的 id 已经存在,则不会替换该文档。否则,mongorestore
可以建立一个新的数据库或更新一个已经存在的数据库。
运行 mongorestore
的唯一条件是拥有转储目录的路径。可以使用以下 mongorestore
示例:
mongorestore dump/
如果将 localhost 指定为主机,并且数据库名称与转储目录中子文件夹的名称匹配,则将生成数据库。当使用远程主机时,命令更加复杂。
用户必须添加 -uri
标志或所有常规连接标志,例如:
--host
--db
--username
--port
--password
该应用程序也不需要恢复整个数据库。只能恢复单个集合或集合列表。
用户可以使用 -collection
和 -db
选项并输入 BSON 文件的位置。在这种情况下,-collection
指的是数据库集合的名称:
mongorestore --db=newdb --collection=novels dump/mydb/product.bson
虽然这个命令是有效的,但它不是最优的。 -nsInclude
选项是恢复各种集合的首选方式。
此选项允许用户选择用于恢复 mongo 数据库集合的命名空间模式。
例如,如果转储目录删除了名为 database
和 database2
的数据库,文件夹的最终结构可能如下所示:
.
|_dump
|_database
|_product.metadata.json
|_product.bson
|_order.metadata.json
|_order.bson
|_db2
|_product.metadata.json
|_product.bson
|_order.metadata.json
|_order.bson
database
可能会被分离并导入以在本地环境中使用 -nsInclude.
恢复。命令如下:
mongorestore --db=database1 --nsInclude="database.*" dump/
从数据库 database1
溢出的 database
中的所有集合都将使用上面的命令恢复。但是,即使数据保存在同一个转储目录中,该操作也没有修复 database2
中的任何内容。
结论
正如本文中所讨论的,mongodump
是一个有用的工具,它允许你通过一些指令来备份集合。整个集合可能会被吐出到一个文件中,只需要一个命令。
该程序足够灵活,可以仅备份数据库的所需位,并且它有多种选择来更改你需要保存的数据。
已经开发了许多技术来简化管理数据库的任务。使用这些重要的工具和说明可以快速、干净地完成必须重复的复杂过程。
整个数据库或特定部分可以通过单个命令进行备份或恢复。mongodump
可以在处理 MongoDB 数据库(集合)时使用。