Mongo備份還原


mongodb數據備份和還原主要分爲二種,一種是針對於mongodumpmongorestore,一種是針對庫中mongoexportmongoimportmongodb

Mongodump數據庫

命令格式:json

mongodump -h IP --port 端口 -u 用戶名 -p 密碼 -d 數據庫 -o 文件存在路徑ide

ui

若是沒有用戶誰,能夠去掉-u-pspa

若是導出本機的數據庫,能夠去掉-hrest

若是是默認端口,能夠去掉--portit

若是想導出全部數據庫,能夠去掉-dclass

使用實例: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數據庫中

這二個命令,能夠實現數據庫的備份與還原,文件格式是jsonbson的。沒法實現表級備份或者還原。

 

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" }' 導出uid100的數據

--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