0

我在 MongoDB 2.2 的复制分片集群中使用 mongodump 和 mongorestore。获取备份并恢复它。

首先,我使用 mongodump 创建所有系统的转储,然后删除一个具体集合并使用 mongorestore 将其恢复,并使用 mongodump 的输出。在那之后,集合是正确的(它包含的数据和索引都是正确的),但是关于这个集合是否被分片的信息会丢失。在丢弃它之前,该集合已被分片。然而,在恢复之后,该集合不再被分片。

我当时想知道是否存在将这些信息保存在备份中的方法。我在想,收集的分片信息可能保存在管理数据库中,但在转储中,管理文件夹是空的,并且对这个数据库使用 show collections 我什么也得不到。然后我想它可以保存在元数据中,但这会很奇怪,因为我知道,在元数据中,关于索引的信息被存储并且索引被正确恢复。

然后,我想知道是否可以使用文件系统快照而不是 mongodump + mongorestore 来保留这些信息;或者可能仍在使用 mongodump 和 mongorestore 但停止系统或锁定写入。我不认为最后一个选项可能是原因,因为我在恢复时没有执行写入操作,甚至没有锁定它,而只是为了提供想法。

我还想知道是否有人完全确定当前版本是否仍然不提供此功能。

有任何想法吗?

4

1 回答 1

1

如果您使用 mongodump 备份您的分片集合,您确定它真的需要分片吗?通常分片集合非常大,mongodump 需要很长时间才能备份它。

此处描述了备份大型分片集合可以执行的操作

关键是备份您的配置服务器以及每个分片 - 并在停止平衡后尽可能接近“同时”进行。Config DB 很小,所以无论如何你应该经常备份它。备份大型分片的最佳方式是通过文件快照。

于 2013-02-28T00:10:30.197 回答