mongodb數據備份和還原主要分爲二種,一種是針對於庫的mongodump和mongorestore,一種是針對庫中表的mongoexport和mongoimport。mongodb
Mongodump數據庫
命令格式:json
mongodump -h IP --port 端口 -u 用戶名 -p 密碼 -d 數據庫 -o 文件存在路徑ide
徑ui
若是沒有用戶誰,能夠去掉-u和-p。spa
若是導出本機的數據庫,能夠去掉-h。rest
若是是默認端口,能夠去掉--port。it
若是想導出全部數據庫,能夠去掉-d。class
使用實例:email
導出全部數據庫
mongodump -h 127.0.0.1 -o/home/zhangy/mongodb/
導出指定數據庫
mongodump -h 192.168.1.108-d tank -o /home/zhangy/mongodb/
mongorestore
命令格式:
mongorestore -h IP --port 端口 -u 用戶名 -p 密碼 -d 數據庫 --drop 文件存在路徑
--drop的意思是,先刪除全部的記錄,而後恢復。
使用實例:
恢復全部數據庫到mongodb中
mongorestore/home/zhangy/mongodb/ #這裏的路徑是全部庫的備份路徑
還原指定的數據庫
mongorestore -d tank/home/zhangy/mongodb/tank/ #tank這個數據庫的備份路徑
mongorestore -d tank_new/home/zhangy/mongodb/tank/ #將tank還原tank_new數據庫中
這二個命令,能夠實現數據庫的備份與還原,文件格式是json和bson的。沒法實現表級備份或者還原。
Mongoexport
命令格式:
mongoexport -h IP --port 端口 -u 用戶名 -p 密碼 -d 數據庫 -c 表名 -f 字段 -q 條件導出 --csv -o 文件名
上面的參數好理解,重點說一下:
-f 導出指字段,以字號分割,-f name,email,age導出name,email,age這三個字段
-q 能夠根查詢條件導出,-q'{ "uid" : "100" }' 導出uid爲100的數據
--csv 表示導出的文件格式爲csv的,這個比較有用,由於大部分的關係型數據庫都是支持csv,在這裏有共同點
使用實例:
導出整張表
mongoexport -d tank -cusers -o /home/zhangy/mongodb/tank/users.dat
導出表中部分字段
mongoexport -d tank -cusers --csv -f uid,name,sex -o tank/users.csv
根據條件導出數據
mongoexport -d tank -cusers -q '{uid:{$gt:1}}' -o tank/users.json
mongoimport
命令格式:
1.1,還原整表導出的非csv文件
mongoimport -h IP --port 端口-u 用戶名 -p 密碼 -d 數據庫-c 表名 --upsert --drop 文件名
--upsert 插入或者更新現有數據(若是更新的數據不存在則插入)
1.2,還原部分字段的導出文件
mongoimport -h IP --port 端口-u 用戶名 -p 密碼 -d 數據庫-c 表名 --upsertFields 字段 --drop 文件名
--upsertFields跟--upsert同樣
1.3,還原導出的csv文件
mongoimport -h IP --port 端口-u 用戶名 -p 密碼 -d 數據庫-c 表名 --type 類型 --headerline --upsert --drop 文件名
使用實例:
還原導出的表數據
mongoimport -d tank -cusers --upsert tank/users.dat
部分字段的表數據導入
mongoimport -d tank -cusers --upsertFields uid,name,sex tank/users.dat
還原csv文件
mongoimport -d tank -cusers --type csv --headerline --file tank/users.csv