mongodb運維技術

2021-06-25 19:21:52 字數 2902 閱讀 2754

這一篇我們以管理員的視角來看mongodb,作為一名管理員,我們經常接觸到的主要有4個方面:

1.  安裝部署

2.  狀態監控

3.  安全認證

4.  備份和恢復,

下面我們就一點一點的講解。

一:安裝部署

我之前的文章都是採用console程式來承載,不過在生產環境中這並不是最佳實踐,誰也不願意在機器重啟後滿地找牙似找mongodb,

在mongodb裡面提供了乙個叫做「服務寄宿」的模式,我想如果大家對wcf比較熟悉的話很容易聽懂。好了,我們實踐一下,這裡我開一下d盤

裡面的mongodb。

這裡要注意的有兩點:

<1> logpath: 當我們使用服務寄宿的時候,用眼睛都能想明白肯定不會用console來承載日誌資訊了。

好了,console程式叫我看log日誌,那我就看看,發現mongodb已經提示我們如何開啟mongodb,接著我照做就是了。

還要提醒大家一點的就是,這些命令引數很多很複雜也就很容易忘,不過沒關係,資料庫給我們提供了乙個help方法,我們可以

拿mongod和mongo說事。

二:狀態監控

監控可以讓我們實時的了解資料庫的健康狀況以及效能調優,在mongodb裡面給我們提供了三種方式。

1:http監視器

這個我在先前的文章中也提到了,這裡就不贅述了。

2:serverstatus()

這個函式可以獲取到mongodb的伺服器統計資訊,其中包括 :全域性鎖,索引,使用者操作行為等等這些統計資訊,對管理員來說非常

重要,具體的引數含義可以參考園友:

這裡還是截個圖混個眼熟。

前面那些統計資訊再牛x,那也是靜態統計,不能讓我**實時資料變化,還好,mongodb裡面提供了這裡要說的mongodstat

監視器,這玩意會每秒重新整理,在實際生產環境中大有用處,還是截張圖,很有意思,是不是感覺大軍壓境了。

三: 安全認證

作為資料庫軟體,我們肯定不想誰都可以訪問,為了確保資料的安全,mongodb也會像其他的資料庫軟體一樣可以採用使用者

驗證的方法,那麼該怎麼做呢?其實很簡單,mongodb提供了adduser方法,還有乙個注意點就是如果在admin資料庫中新增

將會被視為「超級管理員」。

上面的admin使用者將會被視為超級管理員,「jack」使用者追加的第三個引數表示是否是「唯讀使用者」,好了,該新增的我們都新增了,

我們第一次登入時不是採用驗證模式,現在我們使用--reinstall重啟服務並以--auth驗證模式登入。

好了,我們進入test集合翻翻資料看看情況,我們發現jack使用者始終都是沒有寫入的許可權,不管是授權或者未授權。

四:備份和恢復

這玩意的重要性我想都不需要我來說了吧,這玩意要是搞不好會死人的,mongodb裡面常用的手段有3種。

1: 直接copy

這個算是最簡單的了,不過要注意一點,在伺服器執行的情況下直接copy是很有風險的,可能copy出來時,資料已經遭到

破壞,唯一能保證的就是要暫時關閉下伺服器,copy完後重開。

2:mongodump和mongorestore

這個是mongo給我們提供的內建工具,很好用,能保證在不關閉伺服器的情況下copy資料。

為了操作方便,我們先刪除授權使用者。

好了,我們轉入正題,這裡我先在d盤建立乙個backup資料夾用於存放test資料庫。

快看,資料已經備份過來了,太爽了,現在我們用mongorestore恢復過去,記住啊,它是不用關閉機器的。

提一點的就是 drop選項,這裡是說我將test資料恢復之前先刪除原有資料庫裡面的資料,同樣大家可以通過help檢視。

3:主從複製

這個我在上上篇有所介紹,這裡也不贅述了。

其實上面的1,2兩點都不能保證獲取資料的實時性,因為我們在備份的時候可能還有資料灌在記憶體中不出來,那麼我們

想說能不能把資料暴力的刷到硬碟上,當然是可以的,mongodb給我們提供了fsync+lock機制就能滿足我們提的需求。

fsync+lock首先會把緩衝區資料暴力刷入硬碟,然後給資料庫乙個寫入鎖,其他例項的寫入操作全部被阻塞,直到fsync

+lock釋放鎖為止。

這裡就不測試了。

加鎖:    db.runcommand()

釋放鎖: db.$cmd.unlock.findone()

(七)運維技術

這一篇我們以管理員的視角來看mongodb,作為一名管理員,我們經常接觸到的主要有4個方面 1 安裝部署 2 狀態監控 3 安全認證 4 備份和恢復,下面我們就一點一點的講解。一 安裝部署 我之前的文章都是採用console程式來承載,不過在生產環境中這並不是最佳實踐,誰也不願意在機器重啟後滿地找牙...

運維技術盤點

本文將對運維技術從底層到頂層做乙個徹底的梳理和盤點。微服務是近幾年提出的概念,它通過將應用解耦成多個服務的方式來改善其模組化程度,使其更容易被理解 開發 測試和部署,更適用於小團隊快速迭代式協作開發。同時,每個服務也能夠採用不同的技術,便於持續進化。業界前沿網際網路公司都構建了微服務框架 例如基於 ...

Docker運維筆記 MongoDB部署

hdis framework是乙個基於springboot kubernetes 阿里雲服務,編寫的乙個用於支撐微服務的極速開發框架。其文件詳盡,demo全面,設計合理,開箱即用,節省開發時間,提公升開發效率。配套的docker kubernetes教程已踩過各種坑,讓你的微服務無障礙的順暢執行起來...