溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

【MongoDB】處理jumbo chunks警告信息

發布時間:2020-03-15 11:13:38 來源:網絡 閱讀:571 作者:對唔住 欄目:MongoDB數據庫

什么是Jumbo chunk

就是超出設定的chunk大小的chunk,默認chunk大小為64M

為什么要處理Jumbo chunk

jumbo chunk無法被遷移

如何處理?

# 先找到Jumbo chunk信息
sh.status(true)

        { "phone" : NumberLong("xxxxxx") } -->> { "phone" : NumberLong("yyyyyyy") } on : shard_rep1 Timestamp(1, 19) jumbo

# 執行
# 對于上面的Jumbo塊,執行如下命令
sh.splitFind("db.tb",{shardkeyX:"shardkeyXValue_in_range"})

腳本化自動處理

思路處理:
  • 1.既然sh.status(true)可以發現jumbo chunk那么config庫中一定記錄著jumbo信息
  • 2.從chunk的元數據表中找到標記為jumbo的數據快
  • 3.處理超大的數據塊
    復制到mongos shell中執行即可
    db = db.getSiblingDB('config');
    var goblins=db.chunks.find({"jumbo":true})
    goblins.forEach( function (item) { 
    databaseDotTable = item.ns;
    minShardKeyInfo = item.min;
    maxShardKeyInfo = item.max
    for (var i in minShardKeyInfo) {
        var key=i;
        var value=minShardKeyInfo[i];
        if (typeof(value) === "function") {
            for (var j in maxShardKeyInfo) {
                value = maxShardKeyInfo[j]
            }
        }
    }
    var findFilter = {}
    findFilter[key] = value
    print(`Doing db.adminCommand({"${databaseDotTable}",{${key}:${value}})}`);
    result=db.adminCommand({split:databaseDotTable,find:findFilter});
    printjson(result)
    })

備注

1.官方推薦使用更加自動的sh.splitFind而不是原始的sh.splitAt函數

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女