【问题标题】:How to use backup and restore all databases from mongodb?如何使用mongodb备份和恢复所有数据库?
【发布时间】:2013-01-30 04:57:57
【问题描述】:

如果我想为 mongodb 中的所有数据库做一个通用的备份,我所要做的就是:

$ mongodump

如果我想恢复我创建的最新转储,我需要做的就是:

$ mongorestore
  • mongodump 的备份存储在哪里?
  • 如何为要恢复的所有数据库指定特定转储?

【问题讨论】:

    标签: mongodb backup mongodump mongorestore database


    【解决方案1】:

    备份存储在您在命令行中使用 --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,我没有指定目录,它完美地恢复了数据库。
    • 这取决于您的数据库是否分片。如果不是,它必须完美恢复。如果您有分片,则必须采取进一步的步骤。
    • 但我认为 mongodb 会自动对数据库中的集合进行分片?
    • 设置分片集群后,操作会自动进行平衡。但是设置分片环境,添加/删除节点是手动的并且相当困难。检查这个:docs.mongodb.org/manual/sharding
    【解决方案2】:

    全部恢复 mongorestore --host= --port= --username= --authenticationDatabase= --nsInclude "."

    全部备份 mongodump --ssl --host --port -p --authenticationDatabase -u -p --out

    如果要备份数据库,请使用: mongodump --ssl --host --port -p --authenticationDatabase -u -p --out

    如果数据库启用了 ssl,请包含 --ssl 标志 如果不包含 --out mongodump 将创建一个“/dump”目录。 在转储或指定的备份目录中,您会找到带有数据库名称的目录,在每个目录中,您会找到备份文件,对于每个集合,您会找到一个“.bson”和一个“.metadata.xml”。 json"

    要恢复所有数据库,请使用: mongorestore --ssl --host= --port= --username= --authenticationDatabase= --nsInclude "."

    再次,如果数据库启用了 ssl,则包括 --ssl 标志,如果不只是删除它。 “--nsInclude”标志告诉 mongorestore 您要恢复哪些数据库或集合。 例子: --nsInclude=test.users(这将备份数据库测试的用户集合,因此如果转储路径不是该特定数据库的 users.bson 的路径,则会失败)

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

    【讨论】:

      猜你喜欢
      • 2013-03-23
      • 2014-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-14
      相关资源
      最近更新 更多