欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MongoDB磁盤空間占滿導(dǎo)致數(shù)據(jù)庫(kù)被鎖定的解決方法

 更新時(shí)間:2024年04月28日 11:05:50   作者:小蘋果1357  
我在實(shí)際項(xiàng)目中,遇到一個(gè)問(wèn)題,隨著數(shù)據(jù)每天的不斷增加,導(dǎo)致mongodb的磁盤空間站滿了,數(shù)據(jù)庫(kù)被鎖了,無(wú)法使用,所以本文給大家介紹了清理MongoDB數(shù)據(jù)和磁盤空間的方法,需要的朋友可以參考下

一、問(wèn)題

1、我在實(shí)際項(xiàng)目中,遇到一個(gè)問(wèn)題,隨著數(shù)據(jù)每天的不斷增加,導(dǎo)致mongodb的磁盤空間站滿了,數(shù)據(jù)庫(kù)被鎖了,無(wú)法使用。

2、故障表現(xiàn)

  • 部署的應(yīng)用程序突然無(wú)法將數(shù)據(jù)寫入數(shù)據(jù)庫(kù),但是可以正常讀取數(shù)據(jù)。
  • 管理人員通過(guò)客戶端連接數(shù)據(jù)庫(kù)進(jìn)行排查時(shí),可以寫入一條數(shù)據(jù),返回錯(cuò)誤信息:not authorized on xxxx to execute command

3、檢查磁盤空間是否被耗盡

登錄mongodb管理控制臺(tái),查看實(shí)例的狀態(tài),會(huì)發(fā)現(xiàn)已被鎖定,并且磁盤空間占用已經(jīng)100%

優(yōu)化之前數(shù)據(jù)和磁盤情況:

二、解決方案

1、兩種方案:

(1)通過(guò)變更配置方案,擴(kuò)充磁盤空間,來(lái)提升實(shí)例的磁盤空間

(2)刪除數(shù)據(jù)庫(kù)中的數(shù)據(jù),回收磁盤碎片以提升磁盤利用率,來(lái)減少數(shù)據(jù)存儲(chǔ)空間,降低磁盤占用空間

我選擇了第二種方案,因?yàn)槲业臄?shù)據(jù)庫(kù)中,有很多非必要的數(shù)據(jù)可以刪除,可以騰出不少磁盤空間。

2、注意問(wèn)題

這里一定要注意,并不是在MongoDB實(shí)例數(shù)據(jù)庫(kù)中刪除數(shù)據(jù),就能夠釋放MongoDB實(shí)例的磁盤空間。在刪除云數(shù)據(jù)庫(kù)MongoDB實(shí)例的數(shù)據(jù)后,這些被刪除數(shù)據(jù)使用的存儲(chǔ)空間會(huì)被標(biāo)記為空閑,隨后寫入的新數(shù)據(jù)可能會(huì)被直接存儲(chǔ)到這部分空閑的存儲(chǔ)空間中,也可能會(huì)先擴(kuò)展文件的存儲(chǔ)空間再存儲(chǔ)到文件末尾。上述情況將導(dǎo)致一部分空閑的存儲(chǔ)空間不會(huì)被使用,這些未被使用的空閑存儲(chǔ)空間被稱之為磁盤碎片,磁盤碎片越多,磁盤利用率就越低。

3、背景信息

(1)執(zhí)行db.runCommand({collStats: <collection_name>}) 命令訪問(wèn)節(jié)點(diǎn)時(shí),返回結(jié)果有兩個(gè)關(guān)鍵字:sizestorageSize。其中,size表示集合的邏輯存儲(chǔ)大小,storageSize表示集合的物理存儲(chǔ)大小。在執(zhí)行remove命令刪除文檔后,size的值會(huì)減少,但是,storageSize的值不一定會(huì)減少。當(dāng)storageSize大于size時(shí),表示已產(chǎn)生磁盤碎片。

(2)compact是云數(shù)據(jù)庫(kù)MongoDB的壓縮命令,執(zhí)行compact命令可以回收刪除數(shù)據(jù)后產(chǎn)生的磁盤碎片,實(shí)現(xiàn)壓縮磁盤空間的目的,從而提升磁盤利用率。

4、刪除數(shù)據(jù)庫(kù)數(shù)據(jù)

這里以表valueOpenData為例子,針對(duì)主節(jié)點(diǎn),進(jìn)行演示操作,之前已經(jīng)清理了一部分表的磁盤空間,現(xiàn)已經(jīng)不是100%。

刪除數(shù)據(jù),是不會(huì)減少磁盤空間的,這個(gè)一定要注意。

執(zhí)行刪除方案,刪除某一段時(shí)間之前的數(shù)據(jù):

db.valveOpenData.deleteMany({  
    "dataReadTime": {    
        "$lte": ISODate("2022-12-30T23:59:59Z")  
    }  
})

5、查看集合需回收的磁盤碎片空間

刪除數(shù)據(jù) 清理磁盤之前的總磁盤占用情況

刪除數(shù)據(jù)清理磁盤之前的磁盤占用空間

刪除數(shù)據(jù)清理磁盤之前的數(shù)據(jù)庫(kù)情況

執(zhí)行查看集合需回收的磁盤碎片空間語(yǔ)句

db.valveOpenData.stats().wiredTiger["block-manager"]["file bytes available for reuse"]

結(jié)果:可清理磁盤碎片 9161187328 byte

6、回收單節(jié)點(diǎn)或副本集實(shí)例的磁盤碎片 

單節(jié)點(diǎn)實(shí)例只有一個(gè)StandAlone節(jié)點(diǎn),您只需要連接主節(jié)點(diǎn)(Primary節(jié)點(diǎn)),執(zhí)行compact命令回收主節(jié)點(diǎn)(Primary節(jié)點(diǎn))的磁盤碎片。

副本集實(shí)例具有多個(gè)節(jié)點(diǎn),您需要分別連接主節(jié)點(diǎn)(Primary節(jié)點(diǎn))和從節(jié)點(diǎn)(Secondary節(jié)點(diǎn)),在不同節(jié)點(diǎn)上執(zhí)行compact命令回收相應(yīng)節(jié)點(diǎn)的磁盤碎片,執(zhí)行的回收命令相同。

我這里回收的是主節(jié)點(diǎn)(Primary節(jié)點(diǎn))磁盤碎片。

執(zhí)行語(yǔ)句

db.runCommand({compact:"valveOpenData"})

強(qiáng)制執(zhí)行語(yǔ)句

db.runCommand({compact:"valveOpenData",force:true})

執(zhí)行成功的返回結(jié)果如下:{ "ok" : 1 }  ,清理磁盤空間完成,你也可以多執(zhí)行幾次清理。

執(zhí)行查看集合需回收的磁盤碎片空間語(yǔ)句

db.valveOpenData.stats().wiredTiger["block-manager"]["file bytes available for reuse"]

結(jié)果:清理過(guò)后磁盤碎片 1072041984 byte

刪除數(shù)據(jù)清理磁盤之后的總磁盤占用情況

刪除數(shù)據(jù)清理磁盤之后的磁盤占用空間

刪除數(shù)據(jù)清理磁盤之后的數(shù)據(jù)庫(kù)情況

最終結(jié)果:一個(gè)表刪除數(shù)據(jù)、清理磁盤,清理出來(lái)差不多10G的磁盤空間

三、總結(jié)

對(duì)于不重要的數(shù)據(jù),為了防止數(shù)據(jù)量過(guò)大,占滿磁盤空間,需要定時(shí)清理過(guò)期或者不需要的數(shù)據(jù)。
最好寫個(gè)定時(shí)器定時(shí)刪除數(shù)據(jù)比較合適,但是要記得執(zhí)行回收磁盤碎片空間,只有執(zhí)行了回收后,才是真正回收了磁盤空間。

以上就是MongoDB磁盤空間占滿導(dǎo)致數(shù)據(jù)庫(kù)被鎖定的解決方法的詳細(xì)內(nèi)容,更多關(guān)于MongoDB磁盤空間占滿的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 使用aggregate在MongoDB中查詢重復(fù)數(shù)據(jù)記錄的方法

    使用aggregate在MongoDB中查詢重復(fù)數(shù)據(jù)記錄的方法

    這篇文章主要介紹了使用aggregate在MongoDB中查詢重復(fù)數(shù)據(jù)記錄的方法的相關(guān)資料,需要的朋友可以參考下
    2016-01-01
  • MongoDB學(xué)習(xí)筆記之MapReduce使用示例

    MongoDB學(xué)習(xí)筆記之MapReduce使用示例

    這篇文章主要介紹了MongoDB學(xué)習(xí)筆記之MapReduce使用示例,本文直接給出實(shí)例代碼,需要的朋友可以參考下
    2015-07-07
  • Navicat Premium連接mongodb詳細(xì)教程

    Navicat Premium連接mongodb詳細(xì)教程

    這篇文章主要介紹了Navicat Premium連接mongodb詳細(xì)教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • MongoDB的查詢方法

    MongoDB的查詢方法

    這篇文章主要介紹了MongoDB的查詢方法,需要的朋友可以參考下
    2017-05-05
  • mongodb處理中文索引與查找字符串詳解

    mongodb處理中文索引與查找字符串詳解

    這篇文章主要介紹了mongodb處理中文索引與查找字符串的相關(guān)資料,文中介紹的非常詳細(xì),相信對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-03-03
  • MongoDb的

    MongoDb的"not master and slaveok=false"錯(cuò)誤及解決方法

    今天小編就為大家分享一篇關(guān)于MongoDb的"not master and slaveok=false"錯(cuò)誤及解決方法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-10-10
  • MongoDB數(shù)據(jù)查詢方法干貨篇

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

    查詢操作在我們?nèi)粘2僮鲾?shù)據(jù)庫(kù)的時(shí)候是必不可少的一部分,最近有些空閑時(shí)間,所有就將MongoDB數(shù)據(jù)查詢的一些方法技巧總結(jié)了處理,這篇文章主要介紹了MongoDB數(shù)據(jù)查詢的相關(guān)資料,需要的朋友可以參考借鑒,一起來(lái)看看吧。
    2017-05-05
  • 詳解MongoDB范圍片鍵和哈希片鍵

    詳解MongoDB范圍片鍵和哈希片鍵

    這篇文章主要介紹了MongoDB范圍片鍵和哈希片鍵的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用MongoDB,感興趣的朋友可以了解下
    2021-03-03
  • Windows 10下安裝最新版MongoDB的完整步驟

    Windows 10下安裝最新版MongoDB的完整步驟

    這篇文章主要給大家介紹了關(guān)于在Windows 10下安裝最新版MongoDB的完整步驟,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-10-10
  • MongoDB教程之索引介紹

    MongoDB教程之索引介紹

    這篇文章主要介紹了MongoDB教程之索引介紹,本文講解了索引基礎(chǔ)、唯一索引、使用explain、索引管理等內(nèi)容,需要的朋友可以參考下
    2015-05-05

最新評(píng)論