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

Mongodb?刪除集合數(shù)據(jù)后釋放磁盤空間的操作步驟

 更新時間:2023年11月20日 10:35:54   作者:Ethanchen's?notes  
Mongodb當集合數(shù)據(jù)占用比較多,對其進行清理后,集合存儲空間下降,但磁盤空間并沒釋放,對于具有活動更新的集合來說,有一些可重用的空間是正常的,過多的可重用空間通常是刪除大量數(shù)據(jù)的結(jié)果,這篇文章主要介紹了Mongodb?刪除集合數(shù)據(jù)后如何釋放磁盤空間,需要的朋友可以參考下

刪除集合

在Mongodb當集合數(shù)據(jù)占用比較多,對其進行清理后,集合存儲空間下降,但磁盤空間并沒釋放,對于具有活動更新的集合來說,有一些可重用的空間是正常的。過多的可重用空間通常是刪除大量數(shù)據(jù)的結(jié)果。

如果您有許多大量集合需要壓縮(或者想要盡可能的釋放磁盤空間),請重新同步副本集的次要成員

如果compact最終沒有釋放足夠的空間, 通過初始同步將通過復制另一個成員的數(shù)據(jù)來重建所有數(shù)據(jù)文件。

compact 如果您確實決定在生產(chǎn)環(huán)境中運行,可以考慮將通過以下方式最大限度地減少影響:

  • 副本集部署(理想情況下至少三個數(shù)據(jù)承載成員,沒有仲裁者)
  • compact 一次在一臺輔助設(shè)備上運行操作。
  • 配置 secondary 為 hidden 在操作期間,競爭流量將是基本復制。
  • 重新分配主節(jié)點。
  • 壓縮舊的主數(shù)據(jù)庫。

集合數(shù)據(jù)如下:

local_rs1:PRIMARY> db.version()
4.4.15
# Primary 
local_rs1:PRIMARY> db.myCompact.count()
500000
local_rs1:PRIMARY> db.runCommand( { collStats: "myCompact" } ).totalSize
20520960
# 11747328 + 8773632 = 20520960
root@ubuntu-x64_01:/data/mongodb/data/test# ls -tl | grep 3518756157035530607 
-rw------- 1 mongodb mongodb 11747328 11月 17 10:53 collection-8--3518756157035530607.wt
-rw------- 1 mongodb mongodb  8773632 11月 17 10:53 index-9--3518756157035530607.wt
# -------------------------------------
# SECONDARY 1
local_rs1:SECONDARY> db.myCompact.count()
500000
local_rs1:SECONDARY> db.runCommand( { collStats: "myCompact" } ).totalSize
20492288
# 11661312 + 8830976 = 20492288
root@ubuntu-x64_01:/data/mongodb27018/data/test# ls -lt | grep 7679634562768091767
-rw------- 1 mongodb mongodb 11661312 11月 17 10:53 collection-8-7679634562768091767.wt
-rw------- 1 mongodb mongodb  8830976 11月 17 10:53 index-9-7679634562768091767.wt
# -------------------------------------
# SECONDARY 2 
local_rs1:SECONDARY> db.myCompact.count()
500000
local_rs1:SECONDARY> db.runCommand( { collStats: "myCompact" } ).totalSize
20533248
# 11702272 + 8830976 = 20533248
root@ubuntu-x64_01:/data/mongodb27019/data/test# ls -lt | grep 265063963681791421
-rw------- 1 mongodb mongodb 11702272 11月 17 10:53 collection-8-265063963681791421.wt
-rw------- 1 mongodb mongodb  8830976 11月 17 10:53 index-9-265063963681791421.wt

刪除集合所有數(shù)據(jù),執(zhí)行 db.collection.deleteMany() 方法。 Compact 操作阻塞行為是特定于版本的。

版本阻止行為
4.4 之前compact 阻止所有讀寫活動。
4.4compact 阻止這些操作:
db.collection.drop()
db.collection.createIndex()
db.collection.createIndexes()
db.collection.dropIndex()
db.collection.dropIndexes()
collMod
所有其他操作都是允許的。
4.4.17后compact 阻止這些操作:
db.collection.drop()
db.collection.createIndex()
db.collection.createIndexes()
db.collection.dropIndex()
db.collection.dropIndexes()
collMod
所有其他操作都是允許的。
鎖定順序發(fā)生變化。

compact 嘗試減少集合中數(shù)據(jù)和索引所需的存儲空間,向操作系統(tǒng)釋放不需要的磁盤空間。此操作的有效性取決于工作負載,并且無法恢復任何磁盤空間。如果您已從集合中刪除大量數(shù)據(jù)并且不打算替換它,則此命令非常有用。

測試刪除 60% (300000/500000)集合數(shù)據(jù),如下:

# PRIMARY 
local_rs1:PRIMARY> db.myCompact.find().limit(2)
{ "_id" : ObjectId("6556d1a2ff3d41b00910281b"), "uid" : 0, "username" : "compact0", "create_at" : ISODate("2023-11-17T02:36:18.883Z") }
{ "_id" : ObjectId("6556d1a2ff3d41b00910281c"), "uid" : 1, "username" : "compact1", "create_at" : ISODate("2023-11-17T02:36:18.894Z") }
local_rs1:PRIMARY> db.myCompact.deleteMany({ "uid" : { $lt: 300000 } })
{ "acknowledged" : true, "deletedCount" : 300000 }
local_rs1:PRIMARY> db.myCompact.count()
200000

以上清理數(shù)據(jù)后,磁盤空間和集合存儲大小并沒有減小。 如下

# PRIMARY 
local_rs1:PRIMARY> db.myCompact.count()
200000
local_rs1:PRIMARY> db.runCommand( { collStats: "myCompact" } ).totalSize
28233728
root@ubuntu-x64_01:/data/mongodb/data/test# ls -tl | grep 3518756157035530607 
-rw------- 1 mongodb mongodb 15519744 11月 17 11:47 collection-8--3518756157035530607.wt
-rw------- 1 mongodb mongodb 12713984 11月 17 11:47 index-9--3518756157035530607.wt
# ----------------------------
# SECONDARY 1 
local_rs1:SECONDARY> db.myCompact.count()
200000
local_rs1:SECONDARY> db.runCommand( { collStats: "myCompact" } ).totalSize
30523392
root@ubuntu-x64_01:/data/mongodb27018/data/test# ls -lt | grep 7679634562768091767
-rw------- 1 mongodb mongodb 16674816 11月 17 13:09 collection-8-7679634562768091767.wt
-rw------- 1 mongodb mongodb 13848576 11月 17 13:09 index-9-7679634562768091767.wt
# ----------------------------
# SECONDARY 2
local_rs1:SECONDARY> db.myCompact.count()
200000
local_rs1:SECONDARY>  db.runCommand( { collStats: "myCompact" } ).totalSize
20516864
root@ubuntu-x64_01:/data/mongodb27019/data/test# ls -tl | grep 265063963681791421
-rw------- 1 mongodb mongodb 11702272 11月 17 13:14 collection-8-265063963681791421.wt
-rw------- 1 mongodb mongodb  8814592 11月 17 13:14 index-9-265063963681791421.wt

Compact 集合

對于副本集, 您可以在存儲副本集中的集合和索引上使用 compact ,但是有一些重要的注意事項:

  • 主節(jié)點不會將compact命令復制到輔助節(jié)點。

  • 您應該盡可能在輔助節(jié)點上運行compact。如果您無法在輔助節(jié)點上運行compact,請使用 force 選項。

  • 從 MongoDB 4.4.17 開始:

    • compact 運行時輔助節(jié)點可以進行復制。

    • 允許讀取。

壓縮輔助節(jié)點。compact 在輔助節(jié)點之一上運行。完成后 compact ,依次在剩余的每個輔助節(jié)點上重復該操作。

# SECONDARY 1 
local_rs1:SECONDARY> db.myCompact.count()
200000
local_rs1:SECONDARY> db.runCommand( { collStats: "myCompact" } ).totalSize
30523392
# 釋放空間 23064576 = 22 MB 左右
local_rs1:SECONDARY> db.runCommand( { compact: "myCompact" } )
{
        "bytesFreed" : 23064576,
        "ok" : 1,
        "$clusterTime" : {
                "clusterTime" : Timestamp(1700198786, 1),
                "signature" : {
                        "hash" : BinData(0,"o2RnaYFH8J1pgLaIx2T+iLCkPdY="),
                        "keyId" : NumberLong("7236938018798436354")
                }
        },
        "operationTime" : Timestamp(1700198786, 1)
}
local_rs1:SECONDARY> db.runCommand( { collStats: "myCompact" } ).totalSize
7458816
# 4382720 + 3076096 = 7458816
root@ubuntu-x64_01:/data/mongodb27018/data/test# ls -lt | grep 7679634562768091767
-rw------- 1 mongodb mongodb  4382720 11月 17 13:26 collection-8-7679634562768091767.wt
-rw------- 1 mongodb mongodb  3076096 11月 17 13:26 index-9-7679634562768091767.wt

重新分配主節(jié)點。要讓當前的初選下臺并觸發(fā)選舉,請使用該 rs.stepDown()方法。要提名特定輔助節(jié)點,請調(diào)整成員優(yōu)先級。

local_rs1:PRIMARY> rs.status()
{
        "set" : "local_rs1",
        "date" : ISODate("2023-11-17T05:41:07.931Z"),
        ........
        "members" : [
                {
                        "_id" : 1,
                        "name" : "192.168.88.11:27018",
                        "health" : 1,
                        "state" : 2,
                        "stateStr" : "SECONDARY",
                        ......
                },
                {
                        "_id" : 3,
                        "name" : "192.168.88.11:27017",
                        "health" : 1,
                        "state" : 1,
                        "stateStr" : "PRIMARY",
                        ......
                },
                {
                        "_id" : 4,
                        "name" : "192.168.88.11:27019",
                        "health" : 1,
                        "state" : 2,
                        "stateStr" : "SECONDARY",
                        ......
                }
        ],
        "ok" : 1,
        "$clusterTime" : {
                "clusterTime" : Timestamp(1700199666, 1),
                "signature" : {
                        "hash" : BinData(0,"a5utef8Cjsp20W8DWtvzsmMn9Wo="),
                        "keyId" : NumberLong("7236938018798436354")
                }
        },
        "operationTime" : Timestamp(1700199666, 1)
}
local_rs1:PRIMARY> rs.stepDown()
{
        "ok" : 1,
        "$clusterTime" : {
                "clusterTime" : Timestamp(1700199726, 1),
                "signature" : {
                        "hash" : BinData(0,"qpsh46gaM9GKg8RMV799tA/o8uw="),
                        "keyId" : NumberLong("7236938018798436354")
                }
        },
        "operationTime" : Timestamp(1700199726, 1)
}

壓縮舊的主數(shù)據(jù)庫。下臺后,舊的主節(jié)點將成為輔助節(jié)點。compact 在舊主節(jié)點上運行。

local_rs1:SECONDARY> db.myCompact.count()
200000
local_rs1:SECONDARY> db.runCommand( { collStats: "myCompact" } ).totalSize
28233728
local_rs1:SECONDARY> db.runCommand( { compact: "myCompact" } )
{
        "bytesFreed" : 18976768,
        "ok" : 1,
        "$clusterTime" : {
                "clusterTime" : Timestamp(1700199986, 1),
                "signature" : {
                        "hash" : BinData(0,"D1zMSrcV9n2Deh/2u1Edw4s2pDk="),
                        "keyId" : NumberLong("7236938018798436354")
                }
        },
        "operationTime" : Timestamp(1700199986, 1)
}
local_rs1:SECONDARY> db.runCommand( { collStats: "myCompact" } ).totalSize
9256960
root@ubuntu-x64_01:/data/mongodb/data/test# ls -tl  | grep 3518756157035530607
-rw------- 1 mongodb mongodb  5341184 11月 17 13:46 collection-8--3518756157035530607.wt
-rw------- 1 mongodb mongodb  3915776 11月 17 13:46 index-9--3518756157035530607.wt

分片集群

對于分片集群 ,compact 僅適用于mongod實例。在分片環(huán)境中,運行 compact 分別在每個分片上作為維護操作。

注意: 你不能針對一個mongos實例 發(fā)出 compact

到此這篇關(guān)于Mongodb 刪除集合數(shù)據(jù)后如何釋放磁盤空間的文章就介紹到這了,更多相關(guān)Mongodb釋放磁盤空間內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解決MongoDB6.0報錯:"mongo"不是內(nèi)部或外部命令,也不是可運行的程序或批處理文件

    解決MongoDB6.0報錯:"mongo"不是內(nèi)部或外部命令,也不是可運行的程序或批處理文件

    這篇文章主要給大家介紹了關(guān)于解決MongoDB6.0報錯:"mongo"不是內(nèi)部或外部命令,也不是可運行的程序或批處理文件的相關(guān)資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-05-05
  • Ubuntu 18.04安裝MongoDB 4.0 的教程詳解

    Ubuntu 18.04安裝MongoDB 4.0 的教程詳解

    這篇文章主要介紹了Ubuntu 18.04安裝MongoDB 4.0 的教程,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-04-04
  • 在mac系統(tǒng)下安裝與配置mongoDB數(shù)據(jù)庫

    在mac系統(tǒng)下安裝與配置mongoDB數(shù)據(jù)庫

    這篇文章主要介紹了在mac系統(tǒng)下安裝與配置mongoDB數(shù)據(jù)庫的操作步驟,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2021-09-09
  • 教大家8天學通MongoDB——第一天 基礎(chǔ)入門篇

    教大家8天學通MongoDB——第一天 基礎(chǔ)入門篇

    MongoDB是目前非常流行的一種非關(guān)系型數(shù)據(jù)庫(NoSQL),因其操作簡單、完全免費、源碼公開等特點,受到了IT從業(yè)人員的青睞,并被廣泛部署于實際的生產(chǎn)環(huán)境中。本文教大家8天學通MongoDB——第一天 基礎(chǔ)入門篇,感興趣的朋友一起來了解了解吧
    2015-09-09
  • MongoDB快速入門筆記(一)之windows下安裝MongoDB方法

    MongoDB快速入門筆記(一)之windows下安裝MongoDB方法

    MongoDB 是一個基于分布式文件存儲的數(shù)據(jù)庫。由 C++ 語言編寫。本文重點給大家介紹MongoDB快速入門筆記(一)之windows下安裝MongoDB方法,非常不錯具有參考借鑒價值,感興趣的朋友一起看下吧
    2016-06-06
  • Mongodb基本操作與Python連接mongodb并進行基礎(chǔ)操作的方法

    Mongodb基本操作與Python連接mongodb并進行基礎(chǔ)操作的方法

    mongodb是基于分布式文件存儲的nosql(非關(guān)系型)數(shù)據(jù)庫,本文分享了mongodb的基礎(chǔ)操作和Python連接并操作mongodb的基礎(chǔ)方法,基礎(chǔ)的不能再基礎(chǔ)了
    2018-09-09
  • MongoDB Windows安裝服務(wù)方法與注意事項

    MongoDB Windows安裝服務(wù)方法與注意事項

    這篇文章主要介紹了MongoDB Windows安裝服務(wù)方法與注意事項的相關(guān)資料,MongoDB作為一個基于分布式文件存儲的數(shù)據(jù)庫,近兩年大受追捧。數(shù)據(jù)靈活的存取方式和高效的處理使得它廣泛用于互聯(lián)網(wǎng)應用,需要的朋友可以參考下
    2016-12-12
  • MongoDB批量將時間戳轉(zhuǎn)為通用日期格式示例代碼

    MongoDB批量將時間戳轉(zhuǎn)為通用日期格式示例代碼

    這篇文章主要給大家介紹了關(guān)于MongoDB批量將時間戳轉(zhuǎn)為通用日期格式的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用MongoDB具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-07-07
  • 使用Node操作MongoDB數(shù)據(jù)庫的方法

    使用Node操作MongoDB數(shù)據(jù)庫的方法

    這篇文章主要介紹了使用Node操作MongoDB數(shù)據(jù)庫的方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2018-01-01
  • MongoDB數(shù)據(jù)庫基礎(chǔ)知識整理

    MongoDB數(shù)據(jù)庫基礎(chǔ)知識整理

    這篇文章介紹了MongoDB數(shù)據(jù)庫的基礎(chǔ)知識,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07

最新評論