2013-02-27 101 views
0

我在MongoDB 2.2中的复制分片集群中使用了mongodump和mongorestore。获得备份并将其恢复。MongoDB。在还原时保留关于分片集合的信息

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

我想知道是否存在保存这些信息的备份方式。我在想,可能将用于收集的分片信息保存在管理数据库中,但在转储中,admin文件夹是空的,并且使用show集合来获取此数据库,我什么也得不到。然后我认为它可以保存在元数据中,但这会很奇怪,因为我知道在元数据中存储了有关索引的信息并正确地还原了索引。

然后,我想知道是否可以使用此信息而不是mongodump + mongorestore,文件系统快照;或者可能仍然使用mongodump和mongorestore,但是会停止系统或锁定写入。我不这样做,最后的选择可能是原因,因为我没有执行写作操作,而恢复甚至不锁定它,而只是给出想法。

我也想知道是否有人完全确定是否这种功能在当前版本中仍然不可用。

任何想法?

+1

关于分片的信息保存在配置服务器的config数据库中 - 三个专用的'mongod'实例。 – ghik 2013-02-27 23:11:35

+0

我一直在看配置数据库中的块集合,我认为这正是我正在寻找的。但是,我试着恢复这个集合,它不起作用。我是否应该恢复整个配置数据库以使我的集合重新分区? – 2013-02-28 18:38:12

+0

目前尚不清楚您要*拥有哪个流程。你是否试图在其他地方重新创建分片群集? – 2013-02-28 19:57:40

回答

1

如果你正在使用mongodump来备份分片集合,你确定它确实需要分片吗?通常分片集合非常大,而且mongodump需要很长时间才能备份。

你可以做备份了大量分片收集什么是描述here.

关键件备份配置服务器,以及每个碎片 - 并做到这一点接近“同时”尽可能之后已经停止平衡。配置数据库很小,因此无论如何您都应该非常频繁地备份它。备份大型碎片的最佳方法是通过文件快照。

+0

对于我来说,Mongodump并没有花太长时间,我不想使用快照,因为它们需要文件系统工具(LVM)。使用配置数据库的事实是有用的,我意识到它为我保存相关信息的块集合。会恢复配置数据库使我的集合被分割,然后放下它,再次被分割? – 2013-02-28 18:44:13

+1

不,除非你单独备份每个碎片。 mongodump通过mongos将“统一”分片成一个集合的一个转储。从分片数据库中删除集合时,将删除其中的所有信息,包括分片信息。 – 2013-02-28 19:56:39