如何使用备份和还原功能从MongoDB备份和还原所有数据库?

6

如果我想对MongoDB中的所有数据库进行通用备份,那么我需要做的就是:

$ mongodump

如果我想恢复最新的数据库备份,我只需要:

$ mongorestore
  • mongodump的备份存储在哪里?
  • 如何指定特定的dump以恢复所有数据库?
2个回答

7
备份文件存储在您在命令行中使用 --out 选项指定的目录中。如果您没有指定任何输出目录,备份文件将被放置在 ./dump 目录中。使用 mongorestore 时,您必须将之前转储的目录作为命令行参数指定。
在分片环境中,如果您通过 mongos 使用 mongodump,则备份文件将被压缩。还原后,您需要重新对集合进行分片,因此还原并不总是轻松的。请参阅文档:http://docs.mongodb.org/manual/tutorial/backup-small-sharded-cluster-with-mongodump/ 您也可以直接转储 db 文件夹,请检查 cli 选项。
对于分片集群,您可以在这里查看可能性:http://docs.mongodb.org/manual/administration/backups/#sharded-cluster-backups

如果我只是通过Unix终端进行了mongodump,那么它是否为分片环境?实际上,如果我在与mongodump的./dump相同的父目录上进行了mongostore,我没有指定目录,它完美地恢复了数据库。 - alvas
这取决于你的数据库是否进行了分片。如果没有分片,那么必须完美地进行恢复。如果你使用了分片,你需要采取进一步的步骤。 - attish
但是我以为MongoDB会自动将数据库中的集合分片? - alvas
2
一旦您设置了分片集群,平衡操作就会自动进行。但是,设置分片环境、添加/删除节点都是手动且相当困难的。请参阅:http://docs.mongodb.org/manual/sharding/ - attish

1

恢复全部

mongorestore --host=<host> --port=<port> --username=<username> --authenticationDatabase=<authenticationdatabase> --nsInclude "*.*"  <path to dump>

备份全部

mongodump --ssl --host <domain> --port <port> -p <password>  --authenticationDatabase <authenticationdatabase> -u <username> -p <password> --out <dir path>

如果您想备份数据库,请使用以下命令:

mongodump --ssl --host <domain> --port <port> -p <password>  --authenticationDatabase <authenticationdatabase> -u <username> -p <password> --out <dir path>

如果数据库启用了SSL,请包括--ssl标志。

如果不包括--outmongodump将创建一个“/dump”目录。

在转储或指定的备份目录中,您将找到以您的数据库名称命名的目录,在每个目录中,您将找到备份文件,对于每个集合,您将找到一个“.bson”和一个“.metadata.json”文件。

要恢复所有数据库,请使用:

mongorestore --ssl --host=<host> --port=<port> --username=<username> --authenticationDatabase=<authenticationdatabase> --nsInclude "*.*"  <path to dump>

如果数据库启用了 SSL,请包含 --ssl 标记,如果没有,请删除它。 --nsInclude 标记告诉 mongorestore 您要还原哪些数据库或集合。
示例:
--nsInclude=test.users  

这将备份数据库测试中用户集合的数据,因此如果转储路径不是该特定数据库的users.bson路径,则会失败。

要包括所有数据库和所有集合,请使用--nsInclude=*.*--nsInclude *.*,然后定义备份中所有集合目录的路径。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接