2016-08-23 104 views
0

我的本地機器上有一個相當小的MongoDB實例(15GB),但我需要將它推送到遠程服務器,以便我的合作伙伴處理它。問題是雙重的,通過不穩定的連接傳輸MongoDB數據庫

  1. 服務器只具有的可用空間30GB
  2. 我的本地網絡連接很不穩定

我試圖copyDatabase其直接轉移,但還需要大約2直幾天才能完成,其中連接幾乎可以保證在某個時候失敗。我也試過mongoexportmongodump,但都生成大約40GB的文件,這不適合服務器,這就忽略了首先傳輸40GB的困難。

有沒有另一種更穩定的方法,我不知道?

+0

不是一個答案,而是一個選擇,您可以將數據庫拆分爲少於1GB的數據片段併發送。如果它很重要,可以爲磁盤創建快照並將快照複製到新磁盤,並將其發送給您的合作伙伴 –

+0

@JohnZeng我們都需要能夠修改數據並查看更改,反覆複製和刪除整個數據庫是一個選項,但沒有一個我想使用 –

+0

但分裂的想法並不壞 –

回答

3

由於您的mongodump輸出遠遠大於您的數據,因此我假設您使用的是MongoDB 3.0+和WiredTiger存儲引擎,並且您的數據是壓縮的,但是您的輸出不是mongodump

與在MongoDB 3.2中一樣,mongodumpmongorestore工具現在支持壓縮(請參閱:Archiving and Compression in MongoDB Tools)。默認情況下不使用壓縮。

對於所描述的,我建議你的使用情況:

  • 使用mongodump --gzip創建dump目錄中所有集合的壓縮備份。

  • 使用rsync --partial SRC .... DEST或類似的文件傳輸(可恢復)您的不穩定的互聯網連接。

    注意:可能有一些目錄,你可以告訴rsync忽略與--exclude;例如,可能會跳過localtest數據庫。或者,您可能想要指定一個數據庫以備份mongodump --gzip --db dbname

  • 您的合作伙伴可以使用類似的rsync命令行轉移到它們的環境,並使用類似mongorestore --gzip /path/to/backup的命令行來填充其本地MongoDB實例。

  • 如果您打算繼續轉儲轉儲,您可能會發現rsync--checksum選項對包含有用。通常,rsync根據文件大小和修改時間的快速比較傳輸「更新」文件。校驗和涉及更多計算,但允許跳過與以前的備份具有相同數據的集合(除修改時間外)。

如果您需要在持續的基礎上同步數據的變化,也可能是你更好的移動你的數據庫雲服務(如數據庫作爲一種服務提供商像MongoDB的阿特拉斯或您自己的MongoDB實例)。