本文介紹如何通過Mongorestore將ApsaraDB for MongoDB執行個體的邏輯備份檔案恢複至自建MongoDB資料庫中。
前提條件
- 執行個體儲存類型為SSD本地碟。
- 為保障相容性,自建MongoDB資料庫和ApsaraDB for MongoDB執行個體的資料庫版本相同。
背景資訊
MongoDB提供了一組官方備份恢複工具,分別是Mongodump和Mongorestore。ApsaraDB for MongoDB的邏輯備份通過Mongodump產生,當您需要將邏輯備份恢複到自建MongoDB資料庫時可以通過Mongorestore進行恢複。注意事項
- 由於MongoDB一直在迭代更新,舊版本的Mongorestore不能相容新版本的MongoDB。請選擇合適的Mongorestore版本,以相容MongoDB,如何選擇Mongorestore版本,請參見mongorestore。
- 當自建資料庫是分區叢集時,匯入資料命令中的
<hostname>
參數需填寫為自建資料庫中Mongos組件的地址。 - 當自建資料庫是分區叢集時,匯入資料命令中必須添加
--nsExclude="config.*"
,否則資料恢複過程可能會出現報錯。 - 將分區叢集執行個體中的資料恢複至自建資料庫時,需要下載分區叢集執行個體中每個Shard組件的備份資料並匯入到自建資料庫。當分區叢集執行個體存在孤立文檔(Orphaned Document)時,自建資料庫中可能會出現髒資料。恢複多個Shard的備份到同一個分區叢集的時候,僅恢複第一個Shard備份時需使用drop參數。
準備工作
下載並安裝與ApsaraDB for MongoDB執行個體資料庫版本相同的MongoDB至自建MongoDB資料庫所在用戶端(本機伺服器或Elastic Compute Service執行個體),安裝方法請參見Install MongoDB。
操作步驟
- 登入MongoDB管理主控台。
- 根據執行個體類型,在左側導覽列,單擊複本集執行個體列表或分區叢集執行個體列表。
- 在頁面左上方,選擇執行個體所在的資源群組和地區。
- 單擊目標執行個體ID或目標執行個體所在行操作列的管理。
- 備份資料庫。
- 在目標執行個體頁面右上方,單擊備份執行個體。
- 在備份執行個體 面板,選擇備份方法 為邏輯備份。
- 單擊確定,等待執行個體備份完成。
- 在目標執行個體頁面右上方,單擊備份執行個體。
- 下載備份檔案,下載方法請參見下載備份檔案。
- 將下載的備份檔案複製到自建MongoDB所在用戶端(即安裝有Mongorestore工具的用戶端)。
- 執行如下命令,將備份檔案中的資料匯入至自建MongoDB資料庫中。
mongorestore -h <hostname> --port <server port> -u <username> -p <password> --drop --gzip --archive=<backupfile> -vvvv --stopOnError
您需要修改如下參數:- <hostname> :自建MongoDB資料庫所屬的伺服器位址,本機可填寫127.0.0.1。
當自建資料庫是分區叢集時,該參數需填寫為自建資料庫中Mongos組件的地址。
- <server port>:自建MongoDB資料庫的資料庫連接埠。
- <username>:登入自建MongoDB資料庫的資料庫使用者名稱,請確保該使用者擁有所有庫的許可權,建議使用root帳號。
- <password>:登入自建MongoDB資料庫的資料庫密碼。
- <backupfile>:下載的邏輯備份檔案名。
命令參數無需修改,說明如下:- --drop:在恢複備份檔案之前,刪除集合。說明 當恢複多個Shard的備份到同一個分區叢集的時候,僅恢複第一個Shard備份時需使用該參數。
- --gzip:備份檔案中的資料是以gzip形式壓縮過的,需要先解壓。說明 此參數從MongoDB 3.1.4版本開始支援,更多資訊,請參見mongo-tools。
- -vvvv:備份檔案輸出的詳細程度,v越多,備份檔案的資料越詳細。
- --stopOnError:匯入處理程序中遇到任何錯誤後,都會停止匯入資料。
- --nsExclude:不恢複匹配成功的資料集合。例如
--nsExclude="config.*"
。
樣本:
mongorestore -h 127.0.0.1 --port 27017 -u root -p ******** --drop --gzip --archive=hins1111_data_20190710.ar -vvvv --stopOnError
- <hostname> :自建MongoDB資料庫所屬的伺服器位址,本機可填寫127.0.0.1。