天天看點

mongodb 備份mysql_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/。 以下是指令的輸出 -

[email protected]:~$ 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)

[email protected]:~$

此時你可能想知道,上面導出的備份檔案放到什麼地方了? 預設情況下,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" }

>