建立資料庫的 MongoDB 轉儲

Tahseen Tauseef 2023年1月30日
  1. MongoDB 中的 mongodump 命令
  2. 使用 mongodump 命令建立資料庫的 MongoDB 轉儲
  3. 使用 mongodump 命令建立所有資料庫的 MongoDB 轉儲
  4. 使用 mongorestore 命令恢復 Mongo 資料庫
  5. まとめ
建立資料庫的 MongoDB 轉儲

在本 MongoDB 教程中,你將獲得 MongodumpMongorestore 的演練,如何使用它們,以及使用這兩種工具備份和恢復你的集合的一些簡單示例。

MongoDB 中的 mongodump 命令

Mongodump 是一個從資料庫內容建立二進位制匯出的工具。此工具支援 mongodmongos 例項。

使用者可以使用 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 格式和使用者資訊。

  1. 資料庫名稱:database1
  2. 使用者名稱:user123
  3. 密碼: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.jsonolder.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 工具中讀取資料。

mongorestoremongoimport 不同,因為它只是插入資料。

應用程式無法替換資料庫中的現有文件。它包含任何必要的升級。

如果文件的 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 資料庫集合的名稱空間模式。

例如,如果轉儲目錄刪除了名為 databasedatabase2 的資料庫,資料夾的最終結構可能如下所示:

.
 |_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 資料庫(集合)時使用。

相關文章 - MongoDB Database