我有一台 MongoDB 服务器,其中有数据库 DB_A 和 DB_B。mongodump
我使用以下命令创建仅数据库 DB_A 的存档转储:
mongodump --uri "$MONGO_CONNECTION_STRING" --archive --gzip -db "DB_A"
一段时间后,我想使用 DB_C 将此转储重新导入另一个命名空间mongorestore
。由于我非常谨慎,我想在使用测试数据库“DB_B”之前测试此命令:
mongorestore --gzip --uri "$MONGO_CONNECTION_STRING" --nsFrom "DB_B.*" --nsTo "$DB_C.*" --drop --archive ./any-timestamp.tar.gz
我观察到以下行为:由于源命名空间 DB_B 不包含在备份文件中,因此它仍将恢复备份,完全忽略--nsFrom
和--nsTo
参数。因此,我错误地将 DB_A 的状态完全重置为转储状态。
这是预期的行为吗?我怎么知道转储文件只包含一个数据库?有没有办法明确验证参数中命名的数据库是否存在--nsFrom
?
答案1
在此之后也是如此。在其他 RDBMS 中,有一种方法可以在 DB 转储上执行类似 RESTORE HEADERONLY 的操作,它将向您显示转储文件中的内容。