gpt4 book ai didi

mongodb - 不用 mongodump 命令转储和恢复 mongo 数据库

转载 作者:可可西里 更新时间:2023-11-01 10:29:36 25 4
gpt4 key购买 nike

我需要一种方法来为特定的 mongo 数据库生成快照,并能够在另一台服务器上重新创建该数据库。我熟悉 mongodumpmongorestore 命令,但是我需要一个人类可读的文件(或者最好将所有内容打印到标准输出)整个数据库,mongodump 还没有,这是已知和预期的,here are the details why .我有两个相关的问题。

首先,mongodump 是否产生除了集合名称和索引之外的任何其他关键数据(当转储特定数据库时),如果它产生了什么?如果我没记错的话,mongo 可能不喜欢不同版本的转储,这也可能是个问题,是这样吗?

其次,如果我手动提取集合名称和索引信息,将其存储到我自己的格式的 json 中,然后在另一台服务器上恢复它,是否足以创建相同的数据库或者它是否会丢失一些东西?

最佳答案

First, does mongodump produce any other critical data besides collection names and indexes (when dumping a specific database) and if it does what is it?

mongodump 生成数据的二进制备份,包括特定的 BSON types用于字段。导出的其他元数据包括集合选项(如果您更改了默认设置)和索引定义。您可以在由 mongodump 创建的 *.metadata.json 文件中看到这些附加信息。

If I recall correctly, mongo might not like dumps made in different versions, which also might be a problem, is that true?

一般来说,您应该能够使用较新的 mongorestore 版本重播较旧的转储。一些旧版本的 mongodump 可能不会导出您期望的所有集合元数据,因此一般建议 mongodump 至少使用 mongod< 的版本 您正在运行的服务器(如果不是较新的话)。一个这样的例子是 2.2 之前的 mongodump,它没有创建 metadata.json 信息,因此您必须手动确保索引和收集选项。

Second, if I manually extract collection names and index information, store it into a json of my own format, and then restore it on another server, will that be sufficient to create the identical database or would it be missing something?

假设您重新创建所有集合和索引选项(并在创建新集合时正确应用这些选项),您的数据库在远程服务器上将相似但可能不相同。

主要区别在于字段的类型完整性(尽管这可能与您的用例无关)。 BSON 支持比 JavaScript 更丰富的数据类型集。例如,JavaScript 有单一的 Number 类型,而 BSON 支持 int32、int64 和 double。

如果您的备份/恢复过程使用类似 MongoDB Extended JSON 的方式考虑到这一点为了表示其他类型,您可能可以使两个数据库更加一致。

关于mongodb - 不用 mongodump 命令转储和恢复 mongo 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28714447/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com