【发布时间】: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