如何重啟像 MongoDB 這樣的 NoSQL 資料庫服務?


如果我們要為我們的應用程式使用 NoSQL 資料庫,那麼我們需要一些快速且易於使用的資料庫。

我們瞭解到“NoSQL”並不一定意味著“無需維護”。我們考慮使用託管服務,如 MongoDB 的 Atlas 或亞馬遜的 DynamoDB,但我們選擇自行託管,無論是在本地還是在自己的雲實例中。我們評估了 Redis 和 Cassandra 等多個 NoSQL 選項,並選擇了 MongoDB。

我們可以透過從 Linux 發行版安裝、使用 Mongo 的倉庫或使用快照來安裝它。但是,如果出現問題,我們可能需要重新啟動它。

我們將瞭解重新啟動 MongoDB 資料庫的不同方法。

服務

我們可能能夠找到對舊版指令碼服務的引用。它們提供了一個單一的標準命令,無論我們的 Linux 安裝使用 systemd、upstart 還是其他型別的啟動服務,該命令都能正常工作。無論你是否使用服務,它現在都不再必要了

讓我們再次啟動我們本地的 MongoDB 例項 -

$ service mongod restart

在偉大的 Init 戰爭期間,當不同的團體就啟動和控制 Unix 或 Linux 系統部分的不同方法爭論不休時,這個程式變得流行起來。

Red Hat Linux 提供了一個名為“system-config-kickstart”的集中式指令碼,它負責在啟動時執行這些指令碼,並在不再需要時停止它們。

Canonical 試圖用一個名為 Upstart 的系統替換這些指令碼。

服務指令碼發展到處理這兩個相互競爭的啟動、停止和狀態工具——現在,服務指令碼也圍繞 systemctl 進行封裝。Red Hat 在其 7.0 版本中採用了 SystemD。Canonical 在 Ubuntu 20.04 中採用了 SystemD。

最近,systemd 已經成為我們在 Linux 環境中啟動服務的預設方式。而 service 已經不再必要了。

使用 systemctl

我們將使用 systemctl 工具來管理 MongoDB 及其任何依賴項。

當我們最初安裝 MongoDB 時,其所有二進位制檔案和配置檔案位置都已設定好,但它目前未執行。

要檢視我們是否可以使用 status 命令來檢查我們的服務是否已啟動,我們可以執行以下命令 -

$ systemctl status mongod
mongod.service - MongoDB Database Server
   Loaded: loaded (/lib/systemd/system/mongod.service; disabled; vendor
preset: enabled)
   Active: inactive (dead)
   Docs: https://docs.mongodb.org/manual

Systemd 為我們提供了多個用於啟動、停止和重新啟動服務的命令。

讓我們使用以下命令重新啟動 -

命令

$ sudo service mongod restart $ sudo service mongod status

輸出

mongod.service - MongoDB Database Server
   Loaded: loaded (/lib/systemd/system/mongod.service; disabled; vendor
   preset: enabled)
   Active: active (running) since Tue 2022-10-11 07:45:50 HST; 7s ago
   Docs: https://docs.mongodb.org/manual
   Main PID: 124287 (mongod)
   Memory: 135.4M
   CGroup: /system.slice/mongod.service
   └─154987 /usr/bin/mongod --config /etc/mongod.conf
   Oct 11 07:45:50 shoes systemd[1]: Started MongoDB Database Server.

我們可以檢查狀態以獲取最近的日誌條目,包括它們發生的時間和日期以及記錄它們的宿主名稱。

要再次啟動我們的 MongoDB 伺服器,我們只需執行 -

$ systemctl mongod restart

使用enable設定 MongoDB 在系統啟動時啟動

但是,即使我們已使用 systemd 啟動了 MongoDB,這也不一定意味著它會在我們的系統啟動時始終執行。

我們可以使用 systemctl 的“enable”命令來確保 MongoDB 與我們的系統一起啟動。

$ sudo systemctl enable mongod
Created symlink /etc/systemd/system/multi-user.target.wants/mongod.service → /lib/systemd/system/mongod.service.

現在我們已經瞭解了 systemd 如何管理服務檔案,讓我們快速瀏覽一下 etc/systemd 下的連結,以列出這些服務檔案。

現在我們已經為應用程式設定了 Dockerfile,讓我們執行它!我們要確保 MongoDB 在容器啟動時啟動。為此,我們需要告訴 Docker 在滿足所有依賴項後啟動 MongoDB。

結論

在這裡,我們使用 systemd 服務管理工具來檢查 MongoDB 伺服器的狀態,並在必要時重新啟動它。

還有其他方法可以做到這一點,但除非我們在較舊的系統上工作,否則我們不需要了解它們。

最後,如果我們希望 MongoDB 伺服器在重新啟動計算機時自動啟動,請記住“啟用”它。

更新於: 2022-12-01

923 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告