婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > MongoDB的分片集群基本配置教程

MongoDB的分片集群基本配置教程

熱門標簽:怎么投訴地圖標注 老虎洗衣店地圖標注 廣州長安公司怎樣申請400電話 呼和浩特電銷外呼系統加盟 蘋果汽車租賃店地圖標注 云南外呼系統 杭州人工電銷機器人價格 濟南電銷機器人加盟公司 電銷機器人是什么軟件

為何要分片
1.減少單機請求數,降低單機負載,提高總負載
2.減少單機的存儲空間,提高總存空間。

常見的mongodb sharding 服務器架構

要構建一個 MongoDB Sharding Cluster,需要三種角色:
1.Shard Server
即存儲實際數據的分片,每個Shard可以是一個mongod實例,也可以是一組mongod實例構成的Replication Set。為了實現每個Shard內部的auto-failover(自動故障切換),MongoDB官方建議每個Shard為一組Replica Set。
2.Config Server
為了將一個特定的collection存儲在多個shard中,需要為該collection指定一個shard key(片鍵),例如{age: 1} ,shard key可以決定該條記錄屬于哪個chunk(分片是以chunk為單位,后續會介紹)。Config Servers就是用來存儲:所有shard節點的配置信息、每個chunk的shard key范圍、chunk在各shard的分布情況、該集群中所有DB和collection的sharding配置信息。
3.Route Process
這是一個前端路由,客戶端由此接入,然后詢問Config Servers需要到哪個Shard上查詢或保存記錄,再連接相應的Shard進行操作,最后將結果返回給客戶端??蛻舳酥恍枰獙⒃景l給mongod的查詢或更新請求原封不動地發給Routing Process,而不必關心所操作的記錄存儲在哪個Shard上。(所有操作在mongos上操作即可)

配置分片服務器
下面我們在同一臺物理機器上構建一個簡單的 Sharding Cluster:

Shard Server 1:27017
Shard Server 2:27018
Config Server :27027
Route Process:40000

1.步驟一: 啟動Shard Server

mkdir -p ./data/shard/s0 ./data/shard/s1 #創建數據目錄
mkdir -p ./data/shard/log # 創建日志目錄
./bin/mongod --port 27017 --dbpath /usr/local/mongodb/data/shard/s0 --fork --logpath /usr/local/mongodb/data/shard/log/s0.log # 啟動Shard Server實例1
./bin/mongod --port 27018 --dbpath /usr/local/mongodb/data/shard/s1 --fork --logpath /usr/local/mongodb/data/shard/log/s1.log # 啟動Shard Server實例2

步2.驟二: 啟動Config Server

mkdir -p ./data/shard/config #創建數據目錄
./bin/mongod --port 27027 --dbpath /usr/local/mongodb/data/shard/config --fork --logpath /usr/local/mongodb/data/shard/log/config.log #啟動Config Server實例

注意,這里我們完全可以像啟動普通mongodb服務一樣啟動,不需要添加—shardsvr和configsvr參數。因為這兩個參數的作用就是改變啟動端口的,所以我們自行指定了端口就可以
3.步驟三: 啟動Route Process
./bin/mongos --port 4000 --configdb localhost:27027 --fork --logpath /usr/local/mongodb/data/shard/log/route.log --chunkSize=1 # 啟動Route Server實例
mongos啟動參數中,chunkSize這一項是用來指定chunk的大小的,單位是MB,默認大小為200MB,為了方便測試Sharding效果,我們把chunkSize指定為 1MB。意思是當這個分片中插入的數據大于1M時開始進行數據轉移
4.步驟四: 配置Sharding

# 我們使用MongoDB Shell登錄到mongos,添加Shard節點
./bin/mongo admin --port 40000 #此操作需要連接admin庫
> db.runCommand({ addshard:"localhost:27017" }) #添加 Shard Server 或者用 sh.addshard()命令來添加,下同;
{ "shardAdded" : "shard0000", "ok" : 1 }
> db.runCommand({ addshard:"localhost:27018" })
{ "shardAdded" : "shard0001", "ok" : 1 }
> db.runCommand({ enablesharding:"test" }) #設置分片存儲的數據庫
{ "ok" : 1 }
> db.runCommand({ shardcollection: "test.users", key: { id:1 }}) # 設置分片的集合名稱。且必須指定Shard Key,系統會自動創建索引,然后根據這個shard Key來計算
{ "collectionsharded" : "test.users", "ok" : 1 }
 > sh.status(); #查看片的狀態
 > printShardingStatus(db.getSisterDB("config"),1); # 查看片狀態(完整版);
 > db.stats(); # 查看所有的分片服務器狀態

注意這里我們要注意片鍵的選擇,選擇片鍵時需要根據具體業務的數據形態來選擇,切不可隨意選擇,實際中尤其不要輕易選擇自增_id作為片鍵,除非你很清楚你這么做的目的,具體原因我不在此分析,根據經驗推薦一種較合理的片鍵方式,“自增字段+查詢字段”,沒錯,片鍵可以是多個字段的組合。
另外這里說明一點,分片的機制:mongodb不是從單篇文檔的級別,絕對平均的散落在各個片上, 而是N篇文檔,形成一個塊"chunk",優先放在某個片上, 當這片上的chunk,比另一個片的chunk區別比較大時(>=3) ,會把本片上的chunk,移到另一個片上, 以chunk為單位,維護片之間的數據均衡。
也就是說,一開始插入數據時,數據是只插入到其中一塊分片上的,插入完畢后,mongodb內部開始在各片之間進行數據的移動,這個過程可能不是立即的,mongodb足夠智能會根據當前負載決定是立即進行移動還是稍后移動。
在插入數據后,立馬執行db.users.stats();兩次可以驗證如上所說。
這種分片機制,節省了人工維護成本,但是由于其是優先往某個片上插入,等到chunk失衡時,再移動chunk,并且隨著數據的增多,shard的實例之間,有chunk來回移動的現象,這將會為服務器帶來很大的IO開銷,解決這種開銷的方法,就是手動預先分片;

手動預先分片
以shop.user表為例:

sh.shardCollection(‘shop.user',{userid:1}); # user表用userid做shard key
for(var i=1;i=40;i++) { sh.splitAt('shop.user',{userid:i*1000}) } # 預先在1K 2K...40K這樣的界限切好chunk(雖然chunk是空的), 這些chunk將會均勻移動到各片上.

通過mongos添加user數據. 數據會添加到預先分配好的chunk上, chunk就不會來回移動了.

repliction set and shard
一般mongoDB如果真的到了分片的級別后,那片服務器避無可免的要用到復制集,部署的基本思路同上,只需要注意兩點:
sh.addShard( host ) server:port OR setname/server:port # 如果是復制集的片服務器,我們應該復制集的名稱寫在前面比如
sh.addShard('ras/192.168.42.168:27017'); # 27017也就是復制集中的primary
另外在啟動本機的mongod服務的時候,最好把ip也給寫進去,否則有可能會有不可預知的錯誤。

查看分片配置的方法:

1.列舉使用分片的數據庫
為了列舉使用分片的數據庫,需要查詢Config數據庫。如果partitioned域值為true,則這個庫使用了分片技術。
連接一個mongos實例,運行命令獲取使用分片功能的數據庫:

use config
db.databases.find( { "partitioned" : true} )

例如:使用以下命令返回集群中的所有數據庫

use config
db.databases.find()

如果返回結果:

{ "_id" : "admin", "partitioned" : false, "primary" : "config" }
{ "_id" : "mydb", "partitioned" : true, "primary" : "firstset" }
{ "_id" : "test", "partitioned" : false, "primary" : "secondset" }

顯示只有mydb使用了分片。

2.列舉所有的分片
為了列舉當前集合的所有分片,使用listShards命令:

use admin
db.runCommand( { listShards : 1 })

返回結果:

{
    "shards" : [
        {
            "_id" : "firstset",
            "host" : "firstset/mongo01:10001,mongo01:10002,mongo01:10003"
        },
        {
            "_id" : "secondset",
            "host" : "secondset/mongo01:30001,mongo01:30002,mongo01:30003"
        }
    ],
    "ok" : 1
}

3.查看集群的詳細信息
為了查看集群的詳細信息,可以使用db.printShardingStatus()或者sh.status()。所有的方法返回同樣的結果。
例如,使用

sh.status()

查看信息:

--- Sharding Status --- 
 sharding version: {
    "_id" : 1,
    "version" : 4,
    "minCompatibleVersion" : 4,
    "currentVersion" : 5,
    "clusterId" : ObjectId("535a2dab0063b308757e1b70")
}
 shards:
    { "_id" : "firstset", "host" : "firstset/mongo01:10001,mongo01:10002,mongo01:10003" }
    { "_id" : "secondset", "host" : "secondset/mongo01:30001,mongo01:30002,mongo01:30003" }
 databases:
    { "_id" : "admin", "partitioned" : false, "primary" : "config" }
    { "_id" : "mydb", "partitioned" : true, "primary" : "firstset" }
        mydb.test_collection
            shard key: { "name" : 1 }
            chunks:
                secondset    6
                firstset    6
            { "name" : { "$minKey" : 1 } } -->> { "name" : "cat" } on : secondset Timestamp(2, 0) 
            { "name" : "cat" } -->> { "name" : "cow" } on : secondset Timestamp(3, 0) 
            { "name" : "cow" } -->> { "name" : "dog" } on : secondset Timestamp(4, 0) 
            { "name" : "dog" } -->> { "name" : "dragon" } on : secondset Timestamp(5, 0) 
            { "name" : "dragon" } -->> { "name" : "elephant" } on : secondset Timestamp(6, 0) 
            { "name" : "elephant" } -->> { "name" : "horse" } on : secondset Timestamp(7, 0) 
            { "name" : "horse" } -->> { "name" : "lion" } on : firstset Timestamp(7, 1) 
            { "name" : "lion" } -->> { "name" : "pig" } on : firstset Timestamp(1, 7) 
            { "name" : "pig" } -->> { "name" : "rabbit" } on : firstset Timestamp(1, 8) 
            { "name" : "rabbit" } -->> { "name" : "snake" } on : firstset Timestamp(1, 9) 
            { "name" : "snake" } -->> { "name" : "tiger" } on : firstset Timestamp(1, 10) 
            { "name" : "tiger" } -->> { "name" : { "$maxKey" : 1 } } on : firstset Timestamp(1, 11) 
    { "_id" : "test", "partitioned" : false, "primary" : "secondset" }

(1)sharding version展示了分片元數據的版本號。
(2)shards展示了在集群中被作為分片的mongod實例。
(3)databases展示了集群中所有的數據庫,包括沒有使用分片功能的庫。
(4)chunks信息展示了mydb庫的每個分片上有多少個塊和每個塊的范圍。

您可能感興趣的文章:
  • MongoDB分片集群部署詳解
  • 分布式文檔存儲數據庫之MongoDB分片集群的問題

標簽:無錫 興安盟 自貢 雞西 泰安 廈門 遼陽 玉林

巨人網絡通訊聲明:本文標題《MongoDB的分片集群基本配置教程》,本文關鍵詞  MongoDB,的,分片,集群,基本配置,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MongoDB的分片集群基本配置教程》相關的同類信息!
  • 本頁收集關于MongoDB的分片集群基本配置教程的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    五月激情六月综合| 男男成人高潮片免费网站| 亚洲黄色录像片| 国产成人精品亚洲午夜麻豆| 在线观看日韩一区| 一区二区三区在线不卡| 成人sese在线| 一区二区三区在线免费视频| 欧美色图激情小说| 一二三四社区欧美黄| 99riav久久精品riav| 亚洲同性同志一二三专区| av在线综合网| 亚洲一区二区五区| 欧美美女网站色| 激情综合色播激情啊| 国产欧美视频在线观看| 国产99久久久国产精品免费看| 久久女同性恋中文字幕| 国产91精品露脸国语对白| 国产精品久久午夜夜伦鲁鲁| 99久久亚洲一区二区三区青草| 欧美tk—视频vk| 国产成人精品免费在线| 亚洲欧洲一区二区三区| 欧美三级日本三级少妇99| 奇米777欧美一区二区| 国产精品久久久久毛片软件| 99久久精品国产一区| 亚洲精品乱码久久久久久久久| 欧美男男青年gay1069videost | 国产99久久久久久免费看农村| 2024国产精品| 色成人在线视频| 国内精品国产三级国产a久久| 中文字幕字幕中文在线中不卡视频| 一本一本久久a久久精品综合麻豆| 亚洲精品国产a久久久久久 | 日韩一卡二卡三卡国产欧美| 久久精品99久久久| 中文字幕高清不卡| 91精品国产综合久久精品麻豆| 国产精品一二三区| 国产精品久久久久影院色老大 | 欧美一级艳片视频免费观看| 老司机免费视频一区二区| 日韩一区日韩二区| 国产亚洲一区二区三区四区 | 亚洲精品一区二区三区香蕉| 在线观看国产日韩| 97精品久久久午夜一区二区三区| 蜜桃视频在线观看一区二区| 亚洲精品亚洲人成人网| 亚洲国产精品成人综合色在线婷婷 | 日韩美女视频在线| 精品婷婷伊人一区三区三| av在线播放不卡| 国产成人精品免费看| 蜜桃视频一区二区| 日韩在线卡一卡二| 日韩国产欧美视频| 亚洲成av人片在线观看无码| 亚洲精选在线视频| 1024精品合集| 综合av第一页| 亚洲精品久久久蜜桃| 亚洲欧洲制服丝袜| **性色生活片久久毛片| 亚洲同性同志一二三专区| 中文字幕五月欧美| 最新久久zyz资源站| 国产欧美日韩综合| 亚洲欧洲成人精品av97| 中文字幕av一区二区三区| 久久精品欧美一区二区三区不卡| 久久久亚洲午夜电影| 久久精品亚洲麻豆av一区二区| 国产欧美一区二区三区在线老狼| 日本一区二区在线不卡| 最好看的中文字幕久久| 亚洲精品自拍动漫在线| 日韩高清一级片| 日韩精品视频网站| 美女网站色91| 国产成人综合亚洲网站| 9l国产精品久久久久麻豆| 99精品一区二区三区| 91碰在线视频| 欧美日韩三级一区| 国产拍揄自揄精品视频麻豆| 亚洲欧洲av一区二区三区久久| 亚洲国产精品天堂| 天堂影院一区二区| 国产精品系列在线播放| 色av综合在线| 日韩一级二级三级精品视频| 欧美激情一区二区在线| 亚洲永久精品国产| 国产在线精品一区二区夜色| 成人开心网精品视频| 欧美群妇大交群中文字幕| 国产视频一区不卡| 亚洲va欧美va人人爽午夜| 国内精品免费在线观看| 欧美天堂亚洲电影院在线播放| 欧美精品一区二区三区蜜桃视频| 中文字幕在线观看不卡视频| 视频在线观看一区| 菠萝蜜视频在线观看一区| 欧美一级欧美三级| 亚洲精品成人少妇| 国产在线播放一区| 欧美精品乱码久久久久久 | 首页国产欧美日韩丝袜| 播五月开心婷婷综合| 日韩美女在线视频| 亚洲高清在线视频| www.亚洲色图.com| 精品国产一区久久| 亚洲成av人片在线观看| 99精品国产热久久91蜜凸| 欧美一级精品在线| 国产精品理伦片| 国产精品亚洲视频| 日韩欧美一区二区视频| 亚洲亚洲精品在线观看| 97久久精品人人澡人人爽| 久久综合色婷婷| 香蕉久久一区二区不卡无毒影院| 成人综合日日夜夜| 国产女人18毛片水真多成人如厕| 免费xxxx性欧美18vr| 欧美性受xxxx| 亚洲女同ⅹxx女同tv| 成人污污视频在线观看| 精品国产乱码久久久久久1区2区| 婷婷国产v国产偷v亚洲高清| 91影院在线观看| 久久久久久久久免费| 韩国一区二区在线观看| 久久综合中文字幕| 国产精品99久久久久久宅男| 久久欧美中文字幕| 成人一区二区三区在线观看 | 国产成人精品一区二| 久久综合九色综合97婷婷女人 | 成人午夜电影久久影院| 国产精品色婷婷| 国产精品白丝jk白祙喷水网站| 久久久精品人体av艺术| 成人亚洲精品久久久久软件| 国产精品婷婷午夜在线观看| 成人一区二区三区中文字幕| 亚洲美女少妇撒尿| 欧美日韩国产欧美日美国产精品| 日本va欧美va瓶| 久久免费视频色| 97久久久精品综合88久久| 亚洲综合成人网| 日韩午夜激情免费电影| 福利视频网站一区二区三区| 国产精品二三区| 欧美日韩免费一区二区三区| 男男gaygay亚洲| 欧美国产丝袜视频| 欧美三级一区二区| 国产一区久久久| 中文字幕日本不卡| 欧美三级视频在线观看| 国产伦精品一区二区三区视频青涩| 亚洲欧洲精品一区二区三区| 6080午夜不卡| 成人aaaa免费全部观看| 午夜精品久久久久久久久| 久久久www成人免费毛片麻豆| 99re成人精品视频| 蜜桃av噜噜一区二区三区小说| 国产欧美日韩视频一区二区| 欧美日韩一区二区三区四区五区| 黄一区二区三区| 亚洲精选视频在线| 久久看人人爽人人| 欧美另类高清zo欧美| 91在线观看污| 六月丁香婷婷色狠狠久久| 亚洲黄色片在线观看| 欧美精品一区二区三区蜜桃| 欧美日韩五月天| 99久久久久久| 国产一区二区在线看| 日韩中文字幕不卡| 亚洲另类春色校园小说| 国产欧美精品区一区二区三区| 欧美美女直播网站| 色狠狠一区二区三区香蕉| 懂色av中文一区二区三区| 国产制服丝袜一区| 另类综合日韩欧美亚洲| 图片区小说区国产精品视频| 亚洲麻豆国产自偷在线|