最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

記一次Mongodb中admin數(shù)據庫導致的事故

 更新時間:2018年03月11日 11:09:48   作者:laixintao  
這篇文章主要給大家介紹了關于一次Mongodb中admin數(shù)據庫導致的事故的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。

前言

MongoDB副本集默認會創(chuàng)建local、admin數(shù)據庫,local數(shù)據庫主要存儲副本集的元數(shù)據,admin數(shù)據庫則主要存儲MongoDB的用戶、角色等信息。

Mongodb的gridfs一次插入數(shù)據的時候會自動創(chuàng)建幾個索引,我們程序里面的賬號沒有createIndex權限,我需要手動創(chuàng)建一下。結果連接到mongo服務器之后忘記執(zhí)行use xxxdb來切換數(shù)據庫了,于是在admin數(shù)據庫里面創(chuàng)建了一個索引,結果導出一邊的程序報出來很多驗證問題。

Mongo的admin數(shù)據庫太脆弱了,只是創(chuàng)建一個索引就掛了。長個教訓,以后千萬不要手動修改它,更不要用admin保存數(shù)據。

反思一下,這次操作失誤其實爆出我平時一些不好的習慣。

首先,連接mongo應該指定目標數(shù)據。而我之前都是連接到admin,然后用use切換到目標數(shù)據庫。這樣難免會忘記。

$ # 錯誤使用
$ mongo ourdomain.com/admin -u tom -p tompass
$ # 正確的使用
$ mongo ourdomain.com/mydb -u tom -p tompass --authenticationDatabase admin

第二,錯誤的在admin數(shù)據庫執(zhí)行createIndex,返回的結果明確顯示索引創(chuàng)建成功。

{
  "createdCollectionAutomatically" : true,
  "numIndexesBefore" : 1,
  "numIndexesAfter" : 2,
  "ok" : 1,
  ...
}

但是我忽略了,繼續(xù)在正確的數(shù)據庫創(chuàng)建索引。不然可以早一些發(fā)現(xiàn)問題。

最后,創(chuàng)建索引應該自動化,比如gridfs這種對md5, filename創(chuàng)建索引的。

慎用admin數(shù)據庫

當Mongod啟用auth選項時,用戶需要創(chuàng)建數(shù)據庫帳號,訪問時根據帳號信息來鑒權,而數(shù)據庫帳號信息就存儲在admin數(shù)據庫下。

mongo-9551:PRIMARY> use admin
switched to db admin
mongo-9551:PRIMARY> db.getCollectionNames()
[ "system.users", "system.version" ]
  • system.version存儲authSchema的版本信息
  • system.users存儲了數(shù)據庫帳號信息
  • 如果用戶創(chuàng)建了自定義的角色,還會有system.roles集合

用戶可以在admin數(shù)據庫下建立任意集合,存儲任何數(shù)據,但強烈建議不要使用admin數(shù)據庫存儲應用業(yè)務數(shù)據,最好創(chuàng)建新的數(shù)據庫。

admin數(shù)據庫里的system.users、system.roles2個集合的數(shù)據,MongoDB會cache在內存里,這樣不用每次鑒權都從磁盤加載用戶角色信息。目前cache的維護代碼,只有在保證system.users、system.roles的寫入都串行化的情況下才能正確工作,詳情參考官方issue SERVER-16092

從代碼中我們可以看出,MongoDB將將admin數(shù)據庫上的意向寫鎖(MODE_IX)直接升級為寫鎖(MODE_X),也就是說admin數(shù)據庫的寫入操作的鎖級別只能到DB級別,不支持多個collection并發(fā)寫入,在寫入時也不支持并發(fā)讀取。如果用戶在admin數(shù)據庫里存儲業(yè)務數(shù)據,則可能遭遇性能問題。

if (supportsDocLocking() || enableCollectionLocking) { 
if (supportsDocLocking() || enableCollectionLocking) {
+
+ // The check for the admin db is to ensure direct writes to auth collections
+ // are serialized (see SERVER-16092).
+ if (_id == resourceIdAdminDB && !isRead) {
+ _mode = MODE_X;
+ }
+
_lockState->lock(_id, _mode); 

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關文章

  • Windows系統(tǒng)下安裝MongoDB并內網穿透遠程連接

    Windows系統(tǒng)下安裝MongoDB并內網穿透遠程連接

    這篇文章主要給大家介紹了關于Windows系統(tǒng)下安裝MongoDB并內網穿透遠程連接的相關資料,文中通過圖文將步驟介紹的非常詳細,對大家學習或者使用MongoDB具有一定的參考學習價值,需要的朋友可以參考下
    2023-03-03
  • MongoDB模糊查詢正則regex(類似like?和?not?like)

    MongoDB模糊查詢正則regex(類似like?和?not?like)

    在類關系型數(shù)據庫中,like和not?like是常用的模糊查詢操作符,它允許我們在匹配字段的時候使用通配符,在MongoDB中,也有類似的操作符,MongoDB?可以使用?$regex?操作符來設置匹配字符串的正則表達式,MongoDB?使用?PCRE(Perl?兼容的正則表達式)作為正則表達式語言
    2024-02-02
  • MongoDB基礎入門之創(chuàng)建、刪除集合操作

    MongoDB基礎入門之創(chuàng)建、刪除集合操作

    這篇文章主要給大家介紹了關于MongoDB基礎入門之集合操作的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-03-03
  • MongoDB 3.4配置文件避免入坑的注意事項

    MongoDB 3.4配置文件避免入坑的注意事項

    最近在配置mongodb的時候遇到了一些問題,現(xiàn)總結出來方便以后需要或同樣遇到該問題的朋友們參考,下面這篇文章主要給大家介紹了關于MongoDB 3.4配置文件時避免入坑的兩個注意事項,需要的朋友們下面隨著小編來一起學習學習下吧。
    2017-09-09
  • Windows系統(tǒng)啟動MongoDB報錯無法連接服務器的問題及解決方案

    Windows系統(tǒng)啟動MongoDB報錯無法連接服務器的問題及解決方案

    在Windows系統(tǒng)中啟動MongoDB時遇到連接拒絕的錯誤,通常是因為服務未運行或配置問題,本文給大家分享Windows系統(tǒng)啟動MongoDB報錯無法連接服務器的問題及解決方案,一起看看吧
    2024-10-10
  • MongoDB Windows安裝服務方法與注意事項

    MongoDB Windows安裝服務方法與注意事項

    這篇文章主要介紹了MongoDB Windows安裝服務方法與注意事項的相關資料,MongoDB作為一個基于分布式文件存儲的數(shù)據庫,近兩年大受追捧。數(shù)據靈活的存取方式和高效的處理使得它廣泛用于互聯(lián)網應用,需要的朋友可以參考下
    2016-12-12
  • MongoDB數(shù)據查詢方法干貨篇

    MongoDB數(shù)據查詢方法干貨篇

    查詢操作在我們日常操作數(shù)據庫的時候是必不可少的一部分,最近有些空閑時間,所有就將MongoDB數(shù)據查詢的一些方法技巧總結了處理,這篇文章主要介紹了MongoDB數(shù)據查詢的相關資料,需要的朋友可以參考借鑒,一起來看看吧。
    2017-05-05
  • MongoDB各種查詢操作詳解

    MongoDB各種查詢操作詳解

    這篇文章主要介紹了MongoDB各種查詢操作詳解,包括比較查詢、關聯(lián)查詢、數(shù)組查詢等,需要的朋友可以參考下
    2014-03-03
  • C#實現(xiàn)窗體中的各個控件同比自動放縮大小

    C#實現(xiàn)窗體中的各個控件同比自動放縮大小

    這篇文章主要介紹了C#實現(xiàn)窗體中的各個控件同比自動放縮大小,實現(xiàn)方式主要是利用panel控件為主題,對于每個控件的大小位置和字體這幾個屬性進行記錄,然后根據窗體改變的大小同時放縮,需要的朋友可以參考下
    2014-10-10
  • MongoDB系列教程(六):java操作mongodb實例

    MongoDB系列教程(六):java操作mongodb實例

    這篇文章主要介紹了MongoDB系列教程(六):java操作mongodb實例,本文講解了java中操作mongodb數(shù)據增加、刪除、修改、查詢數(shù)據等代碼實例,需要的朋友可以參考下
    2015-05-05

最新評論

岐山县| 云浮市| 宁海县| 枣阳市| 陇川县| 英超| 汾西县| 瓦房店市| 浦北县| 吉安市| 信宜市| 辰溪县| 云和县| 土默特右旗| 哈尔滨市| 张家界市| 丰城市| 河曲县| 奇台县| 南充市| 横峰县| 门头沟区| 迭部县| 连州市| 临澧县| 丰镇市| 东乡族自治县| 都安| 岳阳县| 化隆| 孟津县| 平泉县| 化州市| 达拉特旗| 南丹县| 石景山区| 招远市| 罗甸县| 偃师市| 武隆县| 巴彦淖尔市|