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