這一篇我們以管理員的視角來看mongodb,作為一名管理員,我們經(jīng)常接觸到的主要有4個方面:
1. 安裝部署
2. 狀態(tài)監(jiān)控
3. 安全認證
4. 備份和恢復(fù),
下面我們就一點一點的講解。
一:安裝部署
我之前的文章都是采用console程序來承載,不過在生產(chǎn)環(huán)境中這并不是最佳實踐,誰也不愿意在機器重啟后滿地找牙似找mongodb,
在mongodb里面提供了一個叫做“服務(wù)寄宿”的模式,我想如果大家對wcf比較熟悉的話很容易聽懂。好了,我們實踐一下,這里我開一下D盤里面的mongodb。
這里要注意的有兩點:
1> logpath: 當(dāng)我們使用服務(wù)寄宿的時候,用眼睛都能想明白肯定不會用console來承載日志信息了。
2> install: 開啟安裝服務(wù)寄宿,很happy啊,把管理員的手工操作降低到最小,感謝mongodb。
好了,console程序叫我看log日志,那我就看看,發(fā)現(xiàn)mongodb已經(jīng)提示我們?nèi)绾伍_啟mongodb,接著我照做就是了。
還要提醒大家一點的就是,這些命令參數(shù)很多很復(fù)雜也就很容易忘,不過沒關(guān)系,數(shù)據(jù)庫給我們提供了一個help方法,我們可以
拿mongod和mongo說事。
mongod:
mongo:
二:狀態(tài)監(jiān)控
監(jiān)控可以讓我們實時的了解數(shù)據(jù)庫的健康狀況以及性能調(diào)優(yōu),在mongodb里面給我們提供了三種方式。
1:http監(jiān)視器
這個我在先前的文章中也提到了,這里就不贅述了。
2:serverStatus()
這個函數(shù)可以獲取到mongodb的服務(wù)器統(tǒng)計信息,其中包括 :全局鎖,索引,用戶操作行為等等這些統(tǒng)計信息,對管理員來說非常
重要,具體的參數(shù)含義可以參考這篇文章:https://www.jb51.net/article/53878.htm
這里還是截個圖混個眼熟。
3:mongostat
前面那些統(tǒng)計信息再牛X,那也是靜態(tài)統(tǒng)計,不能讓我觀看實時數(shù)據(jù)變化,還好,mongodb里面提供了這里要說的mongodstat
監(jiān)視器,這玩意會每秒刷新,在實際生產(chǎn)環(huán)境中大有用處,還是截張圖,很有意思,是不是感覺大軍壓境了。
三: 安全認證
作為數(shù)據(jù)庫軟件,我們肯定不想誰都可以訪問,為了確保數(shù)據(jù)的安全,mongodb也會像其他的數(shù)據(jù)庫軟件一樣可以采用用戶
驗證的方法,那么該怎么做呢?其實很簡單,mongodb提供了addUser方法,還有一個注意點就是如果在admin數(shù)據(jù)庫中添加
將會被視為“超級管理員”。
上面的admin用戶將會被視為超級管理員,“jack”用戶追加的第三個參數(shù)表示是否是“只讀用戶”,好了,該添加的我們都添加了,
我們第一次登錄時不是采用驗證模式,現(xiàn)在我們使用--reinstall重啟服務(wù)并以--auth驗證模式登錄。
好了,我們進入test集合翻翻數(shù)據(jù)看看情況,我們發(fā)現(xiàn)jack用戶始終都是沒有寫入的權(quán)限,不管是授權(quán)或者未授權(quán)。
四:備份和恢復(fù)
這玩意的重要性我想都不需要我來說了吧,這玩意要是搞不好會死人的,mongodb里面常用的手段有3種。
1: 直接copy
這個算是最簡單的了,不過要注意一點,在服務(wù)器運行的情況下直接copy是很有風(fēng)險的,可能copy出來時,數(shù)據(jù)已經(jīng)遭到
破壞,唯一能保證的就是要暫時關(guān)閉下服務(wù)器,copy完后重開。
2:mongodump和mongorestore
這個是mongo給我們提供的內(nèi)置工具,很好用,能保證在不關(guān)閉服務(wù)器的情況下copy數(shù)據(jù)。
為了操作方便,我們先刪除授權(quán)用戶。
好了,我們轉(zhuǎn)入正題,這里我先在D盤建立一個backup文件夾用于存放test數(shù)據(jù)庫。
快看,數(shù)據(jù)已經(jīng)備份過來了,太爽了,現(xiàn)在我們用mongorestore恢復(fù)過去,記住啊,它是不用關(guān)閉機器的。
提一點的就是 drop選項,這里是說我將test數(shù)據(jù)恢復(fù)之前先刪除原有數(shù)據(jù)庫里面的數(shù)據(jù),同樣大家可以通過help查看。
3:主從復(fù)制
這個我在上上篇有所介紹,這里也不贅述了。
其實上面的1,2兩點都不能保證獲取數(shù)據(jù)的實時性,因為我們在備份的時候可能還有數(shù)據(jù)灌在內(nèi)存中不出來,那么我們
想說能不能把數(shù)據(jù)暴力的刷到硬盤上,當(dāng)然是可以的,mongodb給我們提供了fsync+lock機制就能滿足我們提的需求。
fsync+lock首先會把緩沖區(qū)數(shù)據(jù)暴力刷入硬盤,然后給數(shù)據(jù)庫一個寫入鎖,其他實例的寫入操作全部被阻塞,直到fsync
+lock釋放鎖為止。
這里就不測試了。
加鎖: db.runCommand({"fsync":1,"lock":1})
釋放鎖: db.$cmd.unlock.findOne()
您可能感興趣的文章:- mongodb中非常好用的Aggregate入門教程
- MongoDB入門教程之C#驅(qū)動操作實例
- MongoDB入門教程之分片技術(shù)詳解
- MongoDB入門教程之主從復(fù)制配置詳解
- MongoDB入門教程之索引操作淺析
- MongoDB入門教程之聚合和游標(biāo)操作介紹
- MongoDB入門教程之細說MongoDB數(shù)據(jù)庫的增刪查改操作
- MongoDB入門教程之Windows下的MongoDB數(shù)據(jù)庫安裝圖解
- MongoDB入門教程(包含安裝、常用命令、相關(guān)概念、使用技巧、常見操作等)
- MongoDB 簡單入門教程(安裝、基本概念、創(chuàng)建用戶)