mongodump:
在MongoDB中我們使用mongodump命令來備份MongoDB數(shù)據(jù)。該命令可以導(dǎo)出所有數(shù)據(jù)到指定目錄中。
./bin/mongodump -h dbhost -d dbname -o yourdirectory
./bin/mongodump --host mongodb.example.net --port 27017 --db test --collection some --username usr --password pwd --gzip yourdirectory
如果不帶任何參數(shù)直接執(zhí)行mongodump,那么它會去連接本地27017端口上的MongoDB實例,并且會創(chuàng)建名為dump的備份。
在指定了collection的情況下,使用--query參數(shù)備份部分?jǐn)?shù)據(jù)。
./bin/mongodump -h dbhost -d dbname -c cname -q '{ "uid" : "100" }' -o dbdirectory
--gzip表示是否壓縮備份。
在MongoDB未啟動時,用以下命令,在這種方式下不需要運行mongod實例,如果已經(jīng)運行了,必須要停掉。
./bin/mongodump --dbpath /data/db --out /data/backup --db test --username usr--password pwd
mongorestore:
恢復(fù)使用mongorestore命令
./bin/mongorestore -h dbhost -d dbname dbdirectory
./bin/mongorestore --host mongodb.example.net --port 27017 --db test --collection some --username usr --password pwd /data/backup
在指定了collection的情況下,使用--query參數(shù)恢復(fù)部分?jǐn)?shù)據(jù)。
在MongoDB未啟動時,用以下命令
./bin/mongorestore --dbpath /data/db --journal /data/backup
mongoexport:
使用mongoexport,需指定collection。
./bin/mongoexport -h IP --port 端口 -u 用戶名 -p 密碼 -d 數(shù)據(jù)庫 -c 表名 -f 字段 -q 條件導(dǎo)出 --type=csv -o 文件名
- -f 導(dǎo)出指字段,以字號分割,-f name,email,age表示導(dǎo)出name,email,age這三個字段。
- -q 可以根查詢條件導(dǎo)出,-q '{ "uid" : 100 }' 導(dǎo)出uid為100的數(shù)據(jù)。
- --type=csv 表示導(dǎo)出的文件格式為csv的。導(dǎo)出csv必須聲明-f字段。
./bin/mongoexport -d dbname -c cname --type=csv -q '{"type":"channel"}' -f uid,name,sex -o /usr/local/mongodb/users.csv
./bin/mongoexport -d dbname -c cname -q '{uid:{$gt:1}}' -o /usr/local/mongodb/users.json
如果導(dǎo)出json文件,集市指定字段不包括_id,也都會自動包含_id,csv則不會。
mongoimport:
還原全部字段:
./bin/mongoimport -d dbname -c cname --upsert /usr/local/mongodb/users.json
還原部分字段(默認(rèn)包含_id):
./bin/mongoimport -d dbname -c cname --upsertFields uid,name,sex /usr/local/mongodb/users.json
導(dǎo)入csv文件:
./bin/mongoimport -d myinfo -c usertedails_imported_csv_partial --type csv --headerline /usr/local/mongodb/users.csv
若導(dǎo)出csv時,未包含_id字段,則會新建_id。
- --upsert,upsertFields 插入或者更新現(xiàn)有數(shù)據(jù)。
- --headerline表示csv第一行是列名不用導(dǎo)入。
備份分片也相同。-h和-p改為mongos的地址和端口即可。