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 目錄,並把所有的資料庫按資料庫名稱建立目錄。在這個範例中,有兩資料庫 admintest,那麼它將建立兩個目錄。

怎麼樣知道 MongoDB 檔案的位置?

對於大部分軟體,尤其是 Linux平台上的軟體,都有一個相關的組態檔案,因此任何的設定選項都可以從這個檔案中找到。組態檔案的一般在 /etc 目錄下,所以,mongodb 的組態檔案在 /etc/mongod.confmongod.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" }
>