1. 程式人生 > >MongoDB操作-備份和恢復

MongoDB操作-備份和恢復

Mongodb資料庫操作-備份 恢復 匯出 匯入


mongodb資料備份和恢復主要分為二種:一種是針對庫的mongodump和mongorestore,一種是針對庫中表的mongoexport和mongoimport。

一、 mongodump備份資料庫

1. 常用命令格式

mongodump -h IP --port 埠 -u 使用者名稱 -p 密碼 -d 資料庫 -c 表 -o 檔案存放路徑

引數說明:
-h 指明資料庫宿主機的IP
--port 指明資料庫的埠 
-u 指明資料庫的使用者名稱
-p 指明資料庫的密碼
-d 指明資料庫的名字
-c 指明collection的名字
-o 指明到要匯出的檔名
-q 指明匯出資料的過濾條件


2. 匯出所有資料庫

mongodump -o /data/mongobak/

3. 匯出指定資料庫

mongodump -d SERVERLOG -o /data/mongobak/SERVERLOG.bak/

二、 mongorestore恢復資料庫

1. 常用命令格式

mongorestore -h IP --port 埠 -u 使用者名稱 -p 密碼 -d 資料庫 --drop 檔案存在路徑

--drop:先刪除所有的記錄,然後恢復.

2. 恢復所有資料庫到mongodb中

mongorestore /data/mongobak/ #所有庫的備份路徑

3. 恢復指定的資料庫

mongorestore -d SERVERLOG /data/mongobak/SERVERLOG.bak/SERVERLOG/ #SERVERLOG這個資料庫的備份路徑

mongorestore -d SERVERLOG_new /data/mongobak/SERVERLOG.bak/SERVERLOG/ #將SERVERLOG備份資料還原到SERVERLOG_new資料庫中

三、 mongoexport匯出(表或者表中部分欄位)

1. 常用命令格式

mongoexport -h IP --port 埠 -u 使用者名稱 -p 密碼 -d 資料庫 -c 表名 -f 欄位 -q 條件匯出 --csv -o 檔名

引數重點說明:
-f 匯出指定欄位,以逗號分割,-f uid,name,age匯出uid,name,age這三個欄位
-q 可以根據查詢條件匯出,-q '{ "uid" : "100" }' 匯出uid為100的資料
--csv 表示匯出的檔案格式為csv的。這個比較有用,因為大部分的關係型資料庫都是支援csv,在這裡有共同點

2. 匯出整張表

mongoexport -d SERVERLOG -c users -o /data/mongobak/SERVERLOG.bak/users.dat 
connected to: 127.0.0.1 
exported 4 records

3. 匯出表中部分欄位

mongoexport -d SERVERLOG -c users --csv -f uid,name,age -o /data/mongobak/SERVERLOG.bak/users.csv 
connected to: 127.0.0.1 
exported 4 records

4. 根據條件匯出資料

mongoexport -d SERVERLOG -c users -q '{uid:{$gt:1}}' -o /data/mongobak/SERVERLOG.bak/users.json 
connected to: 127.0.0.1 
exported 3 records

四、 mongoimport匯入(表或者表中部分欄位)

1. 常用命令格式

恢復整表匯出的非csv檔案
mongoimport -h IP --port 埠 -u 使用者名稱 -p 密碼 -d 資料庫 -c 表名 --upsert --drop 檔名

--upsert:插入或者更新現有資料

恢復部分欄位的匯出檔案
mongoimport -h IP --port 埠 -u 使用者名稱 -p 密碼 -d 資料庫 -c 表名 --upsertFields 欄位 --drop 檔名

--upsertFields:更新部分的查詢欄位,必須為索引,以逗號分隔.

恢復匯出的csv檔案
mongoimport -h IP --port 埠 -u 使用者名稱 -p 密碼 -d 資料庫 -c 表名 --type 型別 --headerline --upsert --drop 檔名

--type:匯入的檔案型別(預設json)

2. 恢復匯出的表資料

mongoimport -d SERVERLOG -c users --upsert /data/mongobak/SERVERLOG.bak/users.dat 
connected to: 127.0.0.1 
Tue Dec 3 08:26:52.852 imported 4 objects

3. 部分欄位的表資料匯入

mongoimport -d SERVERLOG -c users --upsertFields uid,name,age /data/mongobak/SERVERLOG.bak/users.dat
connected to: 127.0.0.1 
Tue Dec 3 08:31:15.179 imported 4 objects

4. 恢復csv檔案

mongoimport -d SERVERLOG -c users --type csv --headerline --file /data/mongobak/SERVERLOG.bak/users.csv 
connected to: 127.0.0.1 
Tue Dec 3 08:37:21.961 imported 4 objects

--file:需要匯入的檔案