Mongodb

塊大小在 mongo db 日誌中顯示為 1 KB,即使它設置為 300 MB

  • January 4, 2022

我正在執行一個 mongo 集群。

塊大小設置為 300 MB,但今天早上它在日誌中顯示塊大小為 1024 字節。我檢查了目前的操作,它也顯示了 1024 字節的塊。我已經檢查了 monos,所有配置伺服器的塊大小都是 300 MB。

請幫我解決這個問題,因為它突然間把我的分片設置下來了。

這是來自 currentOp 的日誌

{
                   "opid" : "shard0000:-1945000000",
                   "active" : true,
                   "secs_running" : 0,
                   "microsecs_running" : NumberLong(72072),
                   "op" : "query",
                   "ns" : "DB20150102.locationCount",
                   "query" : {
                           "splitVector" : "DB20150102.locationCount",
                           "keyPattern" : {
                                   "articleId" : 1,
                                   "host" : 1
                           },
                           "min" : {
                                   "articleId" : { "$minKey" : 1 },
                                   "host" : { "$minKey" : 1 }
                           },
                           "max" : {
                                   "articleId" : { "$maxKey" : 1 },
                                   "host" : { "$maxKey" : 1 }
                           },
                           "maxChunkSizeBytes" : 1024,
                           "maxSplitPoints" : 2,
                           "maxChunkObjects" : 250000
                   },
                   "client_s" : "192.168.22.106:55881",
                   "desc" : "conn237027",
                   "threadId" : "0x7c6cc55db700",
                   "connectionId" : 237027,
                   "locks" : {
                           "^ibeat20150102" : "R"
                   },
                   "waitingForLock" : true,
                   "numYields" : 14,
                   "lockStats" : {
                           "timeLockedMicros" : {
                                   "r" : NumberLong(32978),
                                   "w" : NumberLong(0)
                           },
                           "timeAcquiringMicros" : {
                                   "r" : NumberLong(48048),
                                   "w" : NumberLong(0)
                           }
                   }
           },

從設置進入

{ "_id" : "chunksize", "value" : 250 }

主分片錯誤

2015-01-02T13:04:48.386+0530

$$ conn237049 $$

警告:由於 key { articleId: “”, host: “abc.com” } 2015-01-02T13:04:48.386+0530 ,塊大於 1024 字節$$ conn237049 $$警告:由於 key { articleId: “0”, host: “xyz.com” },塊大於 1024 字節

我在同一個集合的 mongos 日誌中看到了這個

2015-01-02T14:53:58.983+0530

$$ conn58 $$警告:splitChunk 失敗 - cmd: { splitChunk: “DB20150102.locationCount”, keyPattern: { articleId: 1, host: 1 }, min: { articleId: MinKey, host: MinKey }, max: { articleId: MaxKey, host: MaxKey },來自:“shard0000”,splitKeys:$$ { articleId: “”, host: “abc.com” } $$,shardId:“ibeat20150102.locationCount-articleId_MinKeyhost_MinKey”,configdb:“192.168.24.192:27017,192.168.24.54:27017,192.168.24.55:27017”}結果:{誰:{_id:“DB20150102.locationCount,” ,世衛組織:“ibeatdB61:27017:1420185037:147584946:147584946:1475849446:CONN913:869542099”TS:ObjectID(‘54A660AFDC99CFB22D83C27’),流程:“ibeatdB61:27017:1475849446”,時間:新日期(1420189871037),為什麼:“拆分-{ articleId: MinKey, host: MinKey }" }, ok: 0.0, errmsg: “該集合的元數據鎖定” }

我已經採取了這些步驟:

  1. 停止在伺服器上讀寫
  2. 停止 mongos 伺服器
  3. 重新啟動配置伺服器。
  4. 重啟 mongos 伺服器
  5. 重新開始讀寫。

仍然出現同樣的問題

我的 Primary Shard 是一個副本集配置如下:

  1. 主伺服器:512 GB Ram 5 TB 物理記憶體。
  2. 輔助伺服器 16 GB RAM 5 TB 物理伺服器。
  3. 仲裁者 8 GB 記憶體。

我的輔助分片在其副本集中具有相同的配置。

你是如何改變塊大小的?您是否遵循本指南

回顧一下,應該:

  1. 連接到 mongos
  2. 切換到配置數據庫
  3. 發出更改塊大小命令:
    db.settings.save( { _id:"chunksize", value: <sizeInMB> } )

據我所知,

warning: chunk is larger than 1024 bytes because of key ...

不會關閉分片,只會導致不平衡的集群。

請使用命令 sh.status() 來確認您有多少塊以及在哪個分片中。從給定的日誌中,我可以看到你(應該)只有一個塊,所以它從來沒有被分割過。錯誤消息“集合的元數據鎖被佔用”意味著鎖數據庫中有“鎖”。你可以看到那些

db.getSisterDB('config').locks.find()

檢查“當”鍵,找到那個“舊”鎖文件。你可以刪除它,之後事情應該會更好。

引用自:https://dba.stackexchange.com/questions/87407