MongoDB備份與恢復
本章將介紹如何在MongoDB中創建備份,以及如何恢復數據。
導出轉儲MongoDB數據
要在MongoDB中創建數據庫備份,應該使用 mongodump
命令。 此命令將導出轉儲服務器的整個數據到轉儲目錄。有許多選項可用於限制數據量或創建遠程服務器的備份。
語法
mongodump
命令的基本語法如下:
> mongodump
示例
啓動 mongod 服務器 假設您的 mongod 服務器正在本地主機和端口 27017
上運行,請打開命令提示符並轉到 mongodb 實例的 bin
目錄(如示例安裝路徑:D:\Program Files\MongoDB\Server\3.4\bin
),然後鍵入命令:mongodump
考慮 mycol
集合具有以下數據 -
> db.mycol.find({}, {"_id":1, "title":1})
{ "_id" : 101, "title" : "MongoDB Guide" }
{ "_id" : 102, "title" : "NoSQL Database" }
{ "_id" : 104, "title" : "Python Quick Guide" }
{ "_id" : 100, "title" : "MongoDB Overview" }
>
現在使用以下命令,創建備份 -
> mongodump
該命令將連接到運行在 127.0.0.1
和端口 27017
的服務器,並將服務器的所有數據恢復到目錄/bin/dump/
。 以下是命令的輸出 -
yiibai@ubuntu:~$ mongodump
2017-07-02T17:31:51.115-0700 writing admin.system.version to
2017-07-02T17:31:51.118-0700 done dumping admin.system.version (1 document)
2017-07-02T17:31:51.119-0700 writing test.inventory to
2017-07-02T17:31:51.119-0700 writing test.article to
2017-07-02T17:31:51.120-0700 writing test.mycol to
2017-07-02T17:31:51.121-0700 done dumping test.inventory (5 documents)
2017-07-02T17:31:51.122-0700 done dumping test.article (4 documents)
2017-07-02T17:31:51.122-0700 done dumping test.mycol (4 documents)
yiibai@ubuntu:~$
此時你可能想知道,上面導出的備份文件放到什麼地方了? 默認情況下,MongoDB 會在當前目錄下創建一個 dump
目錄,並把所有的數據庫按數據庫名稱創建目錄。在這個實例中,有兩數據庫 admin
和 test
,那麼它將創建兩個目錄。
怎麼樣知道 MongoDB 文件的位置?
對於大部分軟件,尤其是 Linux平臺上的軟件,都有一個相關的配置文件,因此任何的設置選項都可以從這個文件中找到。配置文件的一般在 /etc
目錄下,所以,mongodb 的配置文件在 /etc/mongod.conf
, mongod.conf
配置的內容如下 -
# mongod.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# Where and how to store data.
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
# engine:
# mmapv1:
# wiredTiger:
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1
#processManagement:
#security:
#operationProfiling:
#replication:
#sharding:
## Enterprise-Only Options:
#auditLog:
#snmp:
以下是可用於 mongodump
命令的可用選項的列表。
語法
描述
示例
mongodump —host HOST_NAME —port PORT_NUMBER
此命令將備份指定的 mongod 實例的所有數據庫。
mongodump --host 127.0.0.1 --port 27017
mongodump —out BACKUP_DIRECTORY
此命令將僅在指定路徑上備份數據庫。
mongodump --out /home/yiibai/mongobak
mongodump —collection COLLECTION —db DB_NAME
此命令將僅備份指定數據庫的指定集合。
mongodump --collection mycol --db test
恢復數據
要恢復備份數據,使用MongoDB的 mongorestore
命令。 此命令從備份目錄中恢復所有數據。
語法
mongorestore
命令的基本語法是 -
> mongorestore
在恢復數據之前,先刪除當前數據庫的部分數據,以演示導入恢復數據後可以查詢到備份時的數據。
> db.mycol.remove({})
WriteResult({ "nRemoved" : 4 })
>
> db.mycol.find({})
>
>
執行恢復命令後,重新查詢數據 -
> db.mycol.find({}, {"title":1})
{ "_id" : 101, "title" : "MongoDB Guide" }
{ "_id" : 102, "title" : "NoSQL Database" }
{ "_id" : 104, "title" : "Python Quick Guide" }
{ "_id" : 100, "title" : "MongoDB Overview" }
>