【问题标题】:MongoDB. Keep information about sharded collections when restoringMongoDB。还原时保留有关分片集合的信息
【发布时间】:2013-02-27 23:02:09
【问题描述】:

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

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

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

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

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

有什么想法吗?

【问题讨论】:

  • 关于分片的信息保存在配置服务器的 config 数据库中 - 三个专用的 mongod 实例。
  • 我一直在查看配置数据库中的块集合,我认为这正是我想要的。但是,我尝试仅恢复此集合,但没有成功。我应该恢复整个配置数据库以再次对我的集合进行分片吗?
  • 不清楚您希望拥有什么样的流程。您是否尝试在其他地方重新创建分片集群?

标签: mongodb sharding database-backups database-administration


【解决方案1】:

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

你可以做什么来备份一个大的分片集合被描述here.

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

【讨论】:

  • Mongodump 对我来说不会花费太长时间,我不想使用快照,因为它们需要文件系统工具 (LVM)。使用配置数据库的事实很有用,我意识到它将相关信息保存在块集合中。恢复配置数据库是否会使我的已分片的集合在删除之前再次分片?
  • 不,除非您单独备份每个分片。通过 mongos 的 mongodump 会将分片位“统一”到集合的单个转储中。当您从分片数据库中删除集合时,您会删除其所有信息,包括分片信息。
猜你喜欢
  • 2012-05-10
  • 2020-04-20
  • 2013-08-31
  • 2018-12-15
  • 1970-01-01
  • 1970-01-01
  • 2019-12-22
  • 2021-08-21
  • 1970-01-01
相关资源
最近更新 更多