MongoDB 資料庫工具與公用程式簡介
無論您使用哪種資料庫,都可能有可用的資料庫工具來協助您使用資料庫。資料庫工具是工具、公用程式和輔助程式的統稱,它們可以讓執行資料庫管理任務變得更輕鬆。
雖然不是必要使用,但資料庫工具與公用程式可以節省您的時間和精力。MongoDB 具有第一方集合,其中包含非常實用且值得了解的命令列公用程式,您可以在部署中使用這些公用程式。在本文中,我們將簡要提及安裝,然後介紹最實用的公用程式。
MongoDB 將其工具與公用程式分為四個類別:二進制匯入/匯出、資料匯入/匯出、診斷工具和 GridFS,因此我們將相應地介紹它們。
安裝 MongoDB 資料庫工具
從 MongoDB 4.4 版開始,MongoDB 資料庫工具與 MongoDB 伺服器的下載分開發布。與先前這些工具與各自的 MongoDB 伺服器版本一起發布的實例相比,它們也以自己的版本控制進行維護。
我們不會涵蓋安裝步驟,但如果您使用 MongoDB 4.4 或更高版本,則以下內容將引導您完成每個作業系統的安裝過程。
如果您正在使用 MongoDB,請查看 Prisma 的MongoDB 連接器!您可以使用 Prisma Client 自信地管理生產環境 MongoDB 資料庫。
若要開始使用 MongoDB 和 Prisma,請查看我們的從頭開始指南,或如何新增至現有專案。
二進制匯入/匯出
mongodump
mongodump
是一個公用程式,用於建立資料庫內容的二進制匯出。此公用程式可以從獨立、副本集和分片叢集部署匯出資料。匯出可以從 mongod
或 mongos
實例執行。務必注意,mongodump
需要從系統命令列執行,而不是 mongo
shell。
mongodump
可以與 mongorestore
(即將介紹)搭配使用,以構成完整備份與復原策略的一部分。mongodump
也可以根據集合、查詢或從生產環境同步到開發環境來產生部分備份。
雖然對於較小規模部署來說是一種可行的策略,但對於較大型 MongoDB 部署,應改用其他備份策略來取代 mongodump
。由於 mongodump
透過與正在運行的 mongod
實例互動來運作,因此可能會影響您正在運行的資料庫效能。除了產生流量之外,該工具還強制資料庫透過記憶體讀取所有資料。當 MongoDB 需要讀取不常存取的資料時,這可能會佔用更常存取的資料資源,從而降低常規工作負載的效能。
mongodump
的基本語法在系統命令列中如下所示
mongodump <options> <connection-string>
mongodump
將產生檔案並將其儲存在 dump/
目錄中,供您存取。您可以在 MongoDB 官方文件中閱讀更多關於連線字串設定和其他選項的資訊。
mongorestore
mongorestore
是 mongodump
的夥伴工具,適用於為小型部署建立充分的備份策略。mongorestore
程式會從二進制資料庫傾印(mongodump
檔案)或標準輸入將資料載入到 mongod
或 mongos
實例中。
與 mongodump
類似,mongorestore
需要在系統命令列中執行,而不是在 mongo
shell 中執行。它也針對正在運行的 mongod
實例運作,因此對於超出小型部署規模的任何還原策略來說,效率不佳。
mongorestore
的基本語法如下所示
mongorestore <options> <connection-string> <directory or file to restore>
可以新增 mongorestore
的其他選項,以滿足您的備份策略或獨立匯入可能需要的任何需求。
bsondump
bsondump
是一種工具,用於讀取使用 mongodump
產生的二進制檔案。bsondump
公用程式會將 BSON 檔案轉換為人類可讀的格式,包括 JSON。
bsondump
必須在命令列中運行,它是一種用於檢查 BSON 檔案的診斷工具。不適用於資料擷取或其他應用程式用途。
bsondump
使用Extended JSON v2.0 (Canonical Mode) 來格式化其資料。預設情況下,bsondump
會寫入標準輸出。若要建立 JSON 檔案,您可以使用以下 --outFile
選項
bsondump --outFile=file.json file.bson
--outFile
指定 bsondump
應將其輸出 JSON 資料寫入的檔案路徑。file.bson
指定要轉換的檔案。MongoDB 文件中深入提供了其他選項。
對於任何需要讓檔案變得人類可讀的 mongodump
除錯任務,bsondump
特別有用。例如,您可以執行以下操作來產生除錯輸出
bsondump --type=debug file.bson
資料匯入/匯出
mongoexport
mongoexport
工具也可以從 MongoDB 實例匯出資料。但是,此命令列工具會產生資料的 JSON 或 CSV 匯出,而不是像 mongodump
這樣的二進制傾印,使其成為較慢的操作。
為了使用 mongoexport
,使用者需要在目標資料庫上至少具有讀取權限。它們可以連線到 mongod
或 mongos
實例。mongoexport
的基本語法如下所示
mongoexport --collection=<coll> <options> <connection-string>
您可以根據連線需求和使用案例合併許多其他選項。由於 mongoexport
會產生 JSON 或 CSV 匯出,為了保留所有豐富的 BSON 資料類型以進行完整實例備份,您需要指定 Extended JSON v2.0 (Canonical mode)。
這是一個重要的選項,因為 JSON 只能直接表示 BSON 支援的某些類型。因此,您必須附加 --jsonFormat
選項並設定為 canonical
。範例可能如下所示
mongoexport --jsonFormat=canonical --collection=<coll> <connection-string>
與 mongodump
類似,mongoexport
具有夥伴匯入工具,能夠呈現匯出的檔案以匯入到 MongoDB 中。
mongoimport
mongoimport
工具會匯入從 Extended JSON(具有保留 BSON 資料類型的 mongoexport
檔案)、CSV 或 TSV 匯出所擷取的資料,這些匯出是從 mongoexport
工具建立的。透過正確的格式設定,mongoimport
也可以從第三方匯出工具匯入檔案。
mongoimport
工具只能從系統命令列使用,而不能從 mongo
shell 使用。它具有以下基本語法
mongoimport <options> <connection> <file>
mongoimport
從使用 mongoexport
建立的備份還原資料庫。因此,兩者的許多引數都相同。最佳實務是在將這些工具一起用於備份策略時,它們應為相同版本。
mongoimport
也僅支援 UTF-8 編碼的資料檔案。如果您嘗試使用任何其他編碼匯入,都會導致錯誤。詳盡的其他選項設定清單可以在 MongoDB 官方文件中找到。
診斷工具
mongostat
MongoDB 也提供實用工具,用於收集有關您的任何資料庫實例深入資訊。其中一個工具是 mongostat
。mongostat
是一種診斷工具,可快速概述目前正在運行的 mongod
或 mongos
實例的狀態。如果您熟悉 UNIX/Linux,會覺得這與 vmstat
類似,只是在 MongoDB 環境中。
mongostat
公用程式只能從系統命令列運行,而不能從 mongo
shell 運行。為了連線到 mongod
實例並使用 mongostat
工具,使用者必須在叢集上具有 serverStatus
權限動作。MongoDB 具有一個稱為 clusterMonitor
的內建角色,可提供此功能。也可以自訂其他角色以利用 mongostat
。
mongostat
的基本語法如下所示
mongostat <options> <connection-string> <polling interval in seconds>
預設情況下,mongostat
報告的值反映 1 秒期間內的操作。但是,您可以使用 <sleeptime>
引數調整此值。將此時間週期調整為大於 1 秒的任何值,都會平均統計數據以反映每秒的平均操作次數。
mongostat
傳回許多欄位,並且可以自訂為僅傳回感興趣的欄位。另一個重要的選項是 --rowcount=<number>, -n=<number>
。此選項限制 mongostat
傳回的列數。傳回欄位的一些範例如下
inserts
:每秒插入資料庫的物件數量。query
:每秒查詢操作次數。vsize
:上次mongostat
呼叫時,程序使用的虛擬記憶體量(以 MB 為單位)。repl
:成員的複寫狀態。
MongoDB 官方文件中涵蓋了更多欄位,但這幾個範例示範了 mongostat
公用程式從系統命令列進行資料庫監控的功能。
mongotop
雖然 mongostat
是一種在資料庫層級進行監控的實用工具,但 mongotop
是一種用於提供每個集合層級統計數據的實用工具。具體來說,mongotop
提供了一種方法來追蹤 mongod
實例每秒花費在讀取和寫入資料的時間量。
mongotop
只能從命令列運行,其基本語法如下所示
mongotop <options> <connection-string> <polling interval in seconds>
mongotop
傳回以下欄位
mongotop.ns
:這是資料庫命名空間,是資料庫名稱和集合的組合mongotop.total
:提供mongod
花費在命名空間上操作的總時間量。mongotop.read
:提供mongod
花費在命名空間上執行讀取操作的時間量。mongotop.write
:提供mongod
花費在命名空間上執行寫入操作的時間量。mongotop.<timestamp>
:提供傳回資料的時間戳記。
mongotop
允許資料庫使用者監控資料庫中集合的流量。您將能夠形成集合在讀取或寫入操作中遇到高峰或低谷的影像。
GridFS
GridFS 是在 MongoDB 資料庫中儲存大型檔案的慣例。所有 MongoDB 官方驅動程式都支援此慣例,以下 mongofiles
程式也是如此。它充當儲存和復原大型檔案(例如影片、音訊和影像)的抽象層。
mongofiles
mongofiles
工具可以從系統命令列操作儲存在 MongoDB 實例中的檔案,作為 GridFS 物件。這特別有用,因為它提供了儲存在檔案系統中的物件與 GridFS 之間的介面。
mongofiles
的基本語法如下
mongofiles <options> <connection-string> <command> <filename or _id>
<command>
元件決定您希望 mongofiles
公用程式執行的動作。一些命令範例如下
list <prefix>
:列出 GridFS 儲存區中的檔案。<prefix>
部分選擇性地將傳回項目的清單限制為以該字元串開頭的檔案。search <string>
:列出 GridFS 儲存區中名稱符合<string>
任何部分的檔案。delete <filename>
:從 GridFS 儲存區刪除指定的檔案。
mongofiles
在您的本機檔案系統與 GridFS 之間提供互連性,可透過系統命令列輕鬆導航。這使得檔案管理和檔案儲存對於資料庫管理員來說更簡單,並增強資料處理能力。
結論
在本文中,我們討論了一些 MongoDB 資料庫工具和公用程式,這些工具和公用程式透過命令列使重要的資料庫任務更簡單。工具可能對於日常資料庫管理操作至關重要,或者僅在臨時需要時才使用。
無論是匯出/匯入資料以維護健全的備份/復原策略、在資料庫或集合層級進行診斷監控,或是簡化檔案系統之間用於檔案管理的介面,MongoDB 都能滿足您的需求。
如果您正在使用 MongoDB,請查看 Prisma 的MongoDB 連接器!您可以使用 Prisma Client 自信地管理生產環境 MongoDB 資料庫。
若要開始使用 MongoDB 和 Prisma,請查看我們的從頭開始指南,或如何新增至現有專案。