在MongoDB中复制/克隆数据库

发布于

在早期版本的MongoDB中,您可以使用命令或其帮助程序方法来复制数据库。copyDB``db.copyDatabase()

MongoDB已经弃用了这些。此外,从版本4.2开始,MongoDB删除了命令,因此也删除了方法,这意味着即使您使用MongoDB 4.2或更高版本,即使你想使用它们,也不能使用它们。copydb``db.copyDatabase()

幸运的是,还有另一种复制MongoDB数据库的方法。

检查MongoDB数据库工具

在MongoDB中,您可以使用MongoDB数据库工具克隆数据库。具体来说,您可以使用 和 。[mongodump](https://database.guide/back-up-a-mongodb-database-using-mongodump/)``[mongorestore](https://database.guide/restore-a-mongodb-database-using-mongorestore/)

MongoDB数据库工具是一套用于使用MongoDB的命令行实用程序。

如果您不确定是否安装了MongoDB数据库工具,请尝试在终端或命令提示符中运行以下命令进行检查:

mongodump --version
mongorestore --version

这专门检查 和 版本。mongodump``mongorestore

如果您没有它们,您可以使用MongoDB网站上的安装说明将MongoDB数据库工具安装到您的系统上。

克隆数据库的示例

您需要从系统的命令行运行(例如,新的终端或命令提示符窗口)。不要从外壳运行它。mongodump``mongorestore``mongo

下面是克隆数据库的代码示例:

mongodump --archive --db=PetHotel | mongorestore --archive  --nsFrom='PetHotel.*' --nsTo='PetHouse.*'

在这种情况下,我们备份数据库,然后将其所有集合还原到名为 的数据库。换句话说,我们将数据库克隆为 .PetHotel``PetHouse``PetHotel``PetHouse

这用于创建数据库的备份文件,然后以不同的名称还原该数据库。为此,我们将数据库转储到标准输出流中,然后通过管道连接到 .mongodump``mongorestore``mongorestore

以下是每个参数的作用:

参数 描述
--archive 将输出写入指定的存档文件,如果未指定存档文件,则写入标准输出 ()。在我们的例子中,存档文件未指定,因此它写入了标准输出。stdout
--db 指定要备份的数据库。在这种情况下,我们备份数据库。PetHotel
--nsFrom 指定转储文件中的集合。星号通配符 () 指定所有集合。*
--nsTo 指定应在还原的数据库中使用的集合名称。

还可以 转储所有数据库。要做到这一点,只需在没有任何参数的情况下运行。但是,当您这样做时,它不会在其转储中包含 和 数据库。mongodump``mongodump``local``config