建立資料庫的 MongoDB 轉儲
-
MongoDB 中的
mongodump
命令 -
使用
mongodump
命令建立資料庫的 MongoDB 轉儲 -
使用
mongodump
命令建立所有資料庫的 MongoDB 轉儲 -
使用
mongorestore
命令恢復 Mongo 資料庫 - まとめ
在本 MongoDB 教程中,你將獲得 Mongodump
和 Mongorestore
的演練,如何使用它們,以及使用這兩種工具備份和恢復你的集合的一些簡單示例。
MongoDB 中的 mongodump
命令
Mongodump 是一個從資料庫內容建立二進位制匯出的工具。此工具支援 mongod
和 mongos
例項。
使用者可以使用 Mongodump 從獨立、副本、集合和分片叢集安裝中匯出資料。
Mongodump 曾經定期更新,每當 MongoDB 伺服器升級時都會提供新版本。但是,該實用程式自 MongoDB 4.4 以來就已進行了版本控制。當前版本 100.2.1 支援 MongoDB 3.6、4.0、4.2 和 4.4。
即使支援所有以前版本的 MongoDB,Mongodump 也可能不完全相容它們。該小工具充當備用計劃。
如果 IT 專業人員想要計劃備份(集合),這是他們每天備份和恢復資料庫的一種方法。例如,Mongodump 可以將所有內容儲存在一個檔案中,並且以後可以使用 Mongorestore 來完全恢復資料庫。
我們可以從系統命令列而不是 mongo shell 執行 mongodump
命令。mongodump
命令結構如下:
mongodump <options> <connection-string>
-uri
和正確結構化的字串或標誌選項,如 -user
、-db
和 -password
可用於連線到 mongo 資料庫。不幸的是,使用者不能將兩個不同的命令合併為一個。
使用 mongodump
命令建立資料庫的 MongoDB 轉儲
mongodump
可以使用 localhost 使用以下命令轉儲名為 database1
的集合,使用 URI 格式和使用者資訊。
- 資料庫名稱:
database1
- 使用者名稱:
user123
- 密碼:
mydatabse123
mongodump --uri="mongodb://uberuser:mydatabse123@localhost:27107/database1?ssl=false&authSource=admin"
使用標準標誌的 mongodump
命令的另一個示例如下所示:
mongodump --user=uberuser --db=database1 --password=mydatabse123 --authenticationDatabase=admin
資料庫備份也可以儲存為存檔檔案。相比之下,將檔案轉儲到目錄中並不好。
這些選擇用於切換伺服器或跨主機傳輸資料。 -archive
選項允許使用者提供存檔的名稱。
此選項生成一個檔案,該檔案可以使用 Mongorestore.
重新匯入資料庫。
如果資料庫的名稱與要轉儲的資料庫相同,請使用正確名稱的 -authenticationDatabase
標誌。使用 URI 時,請確保 authSource
元件連結到正確的資料庫。
典型的 mongodump
方法將整個資料庫轉儲到單個轉儲目錄中,預設情況下命名為 dump.
。該目錄將在我們執行命令的同一目錄中建立。
資料庫將以目錄中的子資料夾命名。在前面的示例中,這將是 database1
;因此,新結構將是 ./dump/database1.
相應資料夾中的資料庫集合將有兩個單獨的檔案——一個 BSON 和一個 JSON 檔案。
.metadate.json
檔案將遵循類似的結構,包含諸如 options,
indexes,
和 ns
之類的後設資料以匹配集合的名稱空間。BSON 檔案中的 .bson
檔案將保留集合的資料。
使用者可以在 mongodump.
中自定義輸出的特定行為。
可以在轉儲目錄中使用諸如 -out
之類的標誌來提供應轉儲資料庫的目錄名稱。例如,轉儲目錄可以稱為 dumbbase.
,而不是轉儲。
下面是命令的顯示方式。
mongodump --user=user123 --db=database1 --password=mydatabse123 --authenticationDatabase=admin --out=dumbbase
預設情況下,所有集合都轉儲到輸出資料夾中。資料夾的名稱將被新增到資料庫中。
使用者可以通過一次僅備份一個集合來進一步限制實用程式的功能。使用者可以使用 -collection
引數指定要轉儲的集合。
如果只轉儲行動人物
集合,則示例 mongodump
命令將是:
mongodump --user=user123 --db=database1 --password=mydatabse123 --authenticationDatabase=admin --out=dumbbase --collection=action_figures
我們還可以使用命令建立以下資料夾結構:
.
|_dumbbase
|_database1
|_action_figures.metadata.json
|_action_figures.bson
可以根據使用者需要多次使用該命令一次備份一個集合。這些說明不會覆蓋輸出資料夾的內容。
下面是將 older
集合新增到轉儲資料夾的示例。
Mongodump --user=user123 --db=database1 --password=mydatabse123 --authenticationDatabase=admin --out=action_figures --collection=older
database/database1
資料夾將使用附加的 older.metadata.json
和 older.bson
檔案建立,其結構如下所示:
.
|_action_figures
|_database1
|_action_figures.metadata.json
|_action_figures.bson
|_older.metadata.json
|_older.bson
使用 mongodump
命令建立所有資料庫的 MongoDB 轉儲
備份和歸檔所有檔案也是可行的。
將所有內容清空到轉儲目錄不是一個好主意。此選項最有助於在主機之間移動資料或在伺服器之間傳輸備份檔案。
它使用 -archive
開關允許使用者命名存檔檔案。此選項生成一個檔案,我們可以使用 mongorestore
重新匯入資料庫。
因此,使用者不能同時使用 -archive
和 -out
選項。
mongodump
命令將轉儲以下示例中的所有資料庫(集合):
mongodump --db=database1 --username=uberuser --password=mydatabse123 --authenticationDatabase=admin --archive=database1.archive
使用 mongorestore
命令恢復 Mongo 資料庫
mongorestore
程式與 mongodump
完全相反,允許使用者恢復資料庫。應用程式從二進位制資料庫轉儲或 Mongodump 工具中讀取資料。
mongorestore
與 mongoimport
不同,因為它只是插入資料。
應用程式無法替換資料庫中的現有文件。它包含任何必要的升級。
如果文件的 id 已經存在,則不會替換該文件。否則,mongorestore
可以建立一個新的資料庫或更新一個已經存在的資料庫。
執行 mongorestore
的唯一條件是擁有轉儲目錄的路徑。可以使用以下 mongorestore
示例:
mongorestore dump/
如果將 localhost 指定為主機,並且資料庫名稱與轉儲目錄中子資料夾的名稱匹配,則將生成資料庫。當使用遠端主機時,命令更加複雜。
使用者必須新增 -uri
標誌或所有常規連線標誌,例如:
--host
--db
--username
--port
--password
該應用程式也不需要恢復整個資料庫。只能恢復單個集合或集合列表。
使用者可以使用 -collection
和 -db
選項並輸入 BSON 檔案的位置。在這種情況下,-collection
指的是資料庫集合的名稱:
mongorestore --db=newdb --collection=novels dump/mydb/product.bson
雖然這個命令是有效的,但它不是最優的。 -nsInclude
選項是恢復各種集合的首選方式。
此選項允許使用者選擇用於恢復 mongo 資料庫集合的名稱空間模式。
例如,如果轉儲目錄刪除了名為 database
和 database2
的資料庫,資料夾的最終結構可能如下所示:
.
|_dump
|_database
|_product.metadata.json
|_product.bson
|_order.metadata.json
|_order.bson
|_db2
|_product.metadata.json
|_product.bson
|_order.metadata.json
|_order.bson
database
可能會被分離並匯入以在本地環境中使用 -nsInclude.
恢復。命令如下:
mongorestore --db=database1 --nsInclude="database.*" dump/
從資料庫 database1
溢位的 database
中的所有集合都將使用上面的命令恢復。但是,即使資料儲存在同一個轉儲目錄中,該操作也沒有修復 database2
中的任何內容。
まとめ
正如本文中所討論的,mongodump
是一個有用的工具,它允許你通過一些指令來備份集合。整個集合可能會被吐出到一個檔案中,只需要一個命令。
該程式足夠靈活,可以僅備份資料庫的所需位,並且它有多種選擇來更改你需要儲存的資料。
已經開發了許多技術來簡化管理資料庫的任務。使用這些重要的工具和說明可以快速、乾淨地完成必須重複的複雜過程。
整個資料庫或特定部分可以通過單個命令進行備份或恢復。mongodump
可以在處理 MongoDB 資料庫(集合)時使用。