數據的備份、恢復以及導出、導入是數據庫管理工作中的重要內容,MongoDB提供了一整套的工具來完成這些工作。
1.數據備份mongodump
mongodump用于數據備份,它的工作原理是對MongoDB進行普通查詢后將結果寫入文件。
mongodump -h 127.0.0.1:27017 -d db_name -o /tmp/
還可以通過-c及-q選項指定需要備份的集合和篩選條件
mongodump -d test -c user -q "{name:'tom'}" -o /tmp/
備份執行完成后,會在-o指定的目錄下以數據庫名創建一個目錄,數據文件存放在這個目錄中。
mongodump的更多用法可以通過--help查看
mongodump --help
2.數據恢復mongorestore
mongorestore與mongodump配合使用,mongorestore用于數據恢復的文件就是mongodump備份的數據文件。
mongorestore -h 127.0.0.1:27017 -d test /tmp/test --drop
--drop表示如果數據庫已存在則刪除原數據庫,不加--drop參數則會將用于恢復的數據庫與原數據庫合并。
3.數據導出mongoexport
mongodump主要是針對庫的備份,MongoDB還提供了針對集合的備份工具mongoexport。mongoexport比較靈活,可以指定導出的格式已經導出的字段。
- 導出JSON格式
mongoexport -d test -c user -o /tmp/test.user.dat
- 導出CSV格式
mongoexport -d test -c user --csv -f _id,name,age -o /tmp/test.user.csv
另外,mongoexport也可以使用-q參數增加篩選條件。
4.數據導入mongoimport
mongoimport與mongoexport配合,使用mongoexport導出的備份文件進行數據恢復。
- JSON格式數據導入
mongoimport -d test -c user --type json /tmp/test.user.dat --upsert
--type參數的默認值是json,如果導入json格式數據,可以不使用。
--upsert表示更新現有數據,如果部使用--upsert,導入數據時遇到_id重復時不會插入數據。另外也可以使用--drop刪除原數據。
- CSV格式數據導入
mongoimport -d test -c user --type csv --headerline --file /tmp/test.user.csv --drop
其中--headerline表示不導入csv文件的第一行,因為csv文件第一行為列名。