2017年02月22日 19:17:51 代碼與酒 閱讀數 21333 標籤: 數據庫mongodb備份還原 更多html
我的分類: MongoDBmongodb
所屬專欄: MongoDB快速入門數據庫
版權聲明:原創文章,開放分享,但請客官留個URL,蟹蟹~~若有紕漏,還請指出,以避免誤導後生! https://blog.csdn.net/qq_16313365/article/details/56494522json
MongoDB官方提供了兩套數據導入導出工具,通常來講,進行整庫導出導入時使用mongodump和mongorestore,這一對組合操做的數據是BSON格式,進行大量dump和restore時效率較高。工具
進行單個集合導出導入時使用mongoexport和mongoimport,這一對組合操做的數據是JSON格式,可讀性較高。學習
mongodump是一個用於導出二進制數據庫內容的實用工具,它導出的bson文檔中只會包含着集合文檔等信息,不包括索引信息(索引信息會單獨導出),因此還原後,索引必須重建(這個不用擔憂,使用mongorestore會自動重建mongodump生成的索引信息)。3.4版本中添加了對只讀視圖的支持。spa
命令 | 全稱 | 默認值 | 參考釋義 |
---|---|---|---|
--help | 查看mongodump命令的使用幫助 | ||
--version | 返回mongodump的版本號 | ||
-h | --host <hostname><:port> | localhost:27017 | 指定mongod要鏈接的主機名及端口號 |
--port <port> | 27017 | 指定MongoDB實例監聽客戶鏈接的TCP端口號 | |
-u | --username <username> | 指定用於向使用認證的MongoDB數據庫認證的用戶名,與--password和 --authenticationDatabase結合使用 |
|
-p | --password <password> | 指定用於向使用認證的MongoDB數據庫認證的密碼。與--username和 -- authenticationDatabase選項結合使用。 |
|
-d | --db <database> | 指定要備份的數據庫。若是不指定,mongodump會將此實例中的全部數據庫備份。 | |
-c | --collection <collection> | 指定要備份的集合。若是不指定,則會將指定數據庫或實例中的全部集合備份。 | |
--gzip | 3.2版本+,壓縮輸出,若是mongodump指定導出到目錄,則該選項會將每一個文件都壓縮, 並添加.gz後綴; 若是mongodump指定導出到文檔或標準輸出流,則該選項會壓縮到文檔或輸出流中 |
||
-o | --out <path> | 指定導出數據的目錄路徑,如不指定,則mongodump默認將文件輸出到dump所在的工做目錄中。 該選項不能和--archive一塊兒使用 |
將mytest數據庫中的user集合導出到F:\bk目錄下.net
mongodump -d mytest -c user -o F:\bk
其中的metadata.json即爲索引信息rest
mongorestore用來導入數據到MongoDB實例中,3.0.0版本以上支持經過標準輸入流來導入數據。code
命令 | 全稱 | 參考釋義 |
---|---|---|
-d | --db <database> | 指定要還原的數據庫。若是不指定,restore將會還原dump記錄的全部數據庫,並會覆蓋現有數據庫數據 |
-c | --collection <collection> | 指定要還原的集合。若是不指定,mongorestore會從文件名中讀取識別集合名稱(若是有擴展名則會省略擴展名) |
--drop | 還原集合以前會先從目標數據庫中刪除集合,不會刪除不在備份中的集合。 | |
--gzip | 3.2版本+,從壓縮文件中還原 | |
<path> | 要還原的數據文件路徑,該參數必須是mongorestore命令的最後一個參數 |
其餘參數與mongodump基本一致。
經過user.bson文件還原mytest數據庫中的user集合,並在還原以前進行刪除
mongorestore --drop -d mytest -c user F:\bk\mytest\user.bson
命令 | 全稱 | 默認值 | 參考釋義 |
---|---|---|---|
--help | 查看mongoexport的使用幫助 | ||
--version | 查看mongoexport的版本號 | ||
-d | --db <database> | 指定要在哪一個數據庫上運行該命令 | |
-c | --collection <collection> | 指定要導出的集合 | |
-f | --fields <field1[,field2]> | 指定導出時只導出一個或多個字段,導出多個時,須要使用逗號分隔; 當字段中有空格時,須要用英文引號括起來。 |
|
-q | --query <JSON> | 提供查詢文檔做爲導出數據源 | |
--type<string> | json | 指定要導出的文件類型,可選值:json,csv | |
-o | --out <file> | 指定要導出的文件路徑(含文件名),若是不指定,則會導出爲標準輸出(例如stdout) |
導出mytest數據庫中的user集合到user.json文件中
mongoexport -d mytest -c user -o F:\bk\user.json
命令 | 可選值 | 參考釋義 |
---|---|---|
--ignoreBlanks | 忽略要導入文件中的空字段,若是不指定該參數,則默認會讀取空字段並建立 | |
--type <json|csv|tsv> | json,csv,tsv | 要導入的文件類型,另外支持tsv |
--headerline | 使用第一行做爲字段名稱 | |
--mode <insert|upsert|merge> | insert(插入), upsert(替換數據庫中的文檔), merge(合併) |
指定導入過程當中,如何應對數據庫文檔與導入文件中的文檔匹配 (默認會使用_id字段對比)的狀況 |
其餘參數與mongoexport基本一致
從user.json文件導入到mytest數據庫中的user集合,並在以前進行刪除
mongoimport --drop -d mytest -c user --file F:\bk\user.json
如圖所示,鏈接以後,選中要導出的數據庫或集合,上方菜單欄有Export和Import按鈕,根據嚮導進行操做就能夠了,比較簡單,相信猿友們都不在話下,就不一一列出了。