求大神解惑:
兩個mongodb結點,主備模式,查看兩個結點下的數據目錄發(fā)現:
主結點data目錄的為23GB,目錄詳情如下:
備份結點data目錄為11GB,錄詳情如下:
db.collection.stats()數據量是一致的,請問這是什么原因?是否有相關的資源可以查閱?
題外話,MongoDB歷史上出現過master/slave復制(其實現在也還存在)。嚴格地說,主備通常指的是那個東西。而我們現在用的基本上是復制集(replica set)。
再說你這種情況,其實是正常的。原理跟你的磁盤用久了會有碎片是一個道理。特別是你曾經大規(guī)模刪除過數據的情況下。簡單地解釋下,假設你的表中有doc1/doc2/doc3/doc4一共4個文檔,在磁盤上的存儲順序是:
doc1|doc2|doc3|doc4
現在你刪除了doc2,磁盤上的空間使用情況變成:
doc1|(空白)|doc3|doc4
系統(tǒng)是沒有辦法釋放這個空白空間的,除非你進行磁盤整理,把空白空間移到最后:
doc1|doc3|doc4|(空白)
然后系統(tǒng)才可以截斷文件尾部的空白,釋放掉這個空間??梢钥闯鰜?,要把空白移動到文件尾是個相當費時費力的操作,最簡單的辦法是:把后面所有的文檔順序前移來填補doc2留下的空白(如上所示doc3/doc4被前移)。但是這樣涉及到大量的磁盤I/O,會對性能造成嚴重影響。當然不乏其他整理磁盤碎片的方法,但是無論哪一個,都會造成比較嚴重的I/O影響,因此一般我們是不會進行這樣的整理的。進行碎片整理的方式就是:compact命令。如前所述,因為它會對性能造成嚴重的影響,因此一般只會在維護時間進行這個操作。而就算你不進行這個操作,系統(tǒng)也知道哪些地方是空白的,在有新文檔進來的時候,會嘗試重新使用這些空白的部分從而最大化空間利用率。只是,無論再好的算法,空間重復利用一定不可能是100%的,因為新進來的文檔永遠沒有辦法正好跟之前被刪除的文檔一樣大,所以只能找一個比新文檔更大的空間來利用,這樣就會留下一個更小的、更難重復利用的碎片。
另外一種變通的方案是把節(jié)點內容刪除,重新進行一次同步。因為同步時相當于把所有文檔全部抓取一遍,并一個接一個重新寫到磁盤上,因此同步完成之后文檔在磁盤上是緊湊排列的,相當于進行了碎片整理。而且在這個過程中,受影響的是從節(jié)點,它在同步過程中并不對外提供服務,所以對線上的影響是最小的。但是注意,它同樣會對主節(jié)點造成影響,因為它要把主節(jié)點上的全部數據都讀一遍,主節(jié)點I/O升高是無法避免的。
最后回到你的問題,為什么從節(jié)點比主節(jié)點小,上面應該已經解釋清楚了。
北大青鳥APTECH成立于1999年。依托北京大學優(yōu)質雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數據專業(yè)的國家
北大青鳥中博軟件學院創(chuàng)立于2003年,作為華東區(qū)著名互聯網學院和江蘇省首批服務外包人才培訓基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團創(chuàng)建于1999年,經過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術與教育服務機構,發(fā)展為教育服務業(yè)的綜合性企業(yè)集團,成為集合面授教學培訓、網
達內教育集團成立于2002年,是一家由留學海歸創(chuàng)辦的高端職業(yè)教育培訓機構,是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
曾工作于聯想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經理從事移動互聯網管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經理職務負責iOS教學及管理工作。
浪潮集團項目經理。精通Java與.NET 技術, 熟練的跨平臺面向對象開發(fā)經驗,技術功底深厚。 授課風格 授課風格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網頁制作和網頁游戲開發(fā)。
具有10 年的Java 企業(yè)應用開發(fā)經驗。曾經歷任德國Software AG 技術顧問,美國Dachieve 系統(tǒng)架構師,美國AngelEngineers Inc. 系統(tǒng)架構師。