日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

mongodb集群与分片的配置说明

發布時間:2023/12/10 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mongodb集群与分片的配置说明 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

mongodb集群與分片的配置說明

Shardingcluster介紹

這是一種可以水平擴展的模式,在數據量很大時特給力,實際大規模應用一般會采用這種架構去構建monodb系統。


系統分為需要三種角色:

Shard Server:mongod 實例,用于存儲實際的數據塊,實際生產環境中一個 shard server角色可由幾臺機器組個一個relica set承擔,防止主機單點故障

Config Server:mongod 實例,存儲了整個 Cluster Metadata,其中包括 chunk 信息。

Route Server:mongos 實例,前端路由,客戶端由此接入,且讓整個集群看上去像單一數據庫,前端應用可以透明使用。

架構圖:

本系統環境架構圖:

注:mongoDB集群最好是奇數數個服務器,本例介紹的是三臺服務器

?

  • 分別在3臺機器上運行一個mongod實例(稱為mongod shard11,mongod shard12,mongod shard13)組成replica set1 ,作為cluster的shard1

  • 分別在3臺機器上運行另一個mongod實例(稱為mongod shard21,mongod shard22,mongod shard23)組成replica set2 ,作為cluster的shard2

  • 分別在3臺機器運行一個mongod實例,作為3個config server

  • 分別在每臺機器運行一個mongos進程,用于客戶連接

  • 主機

    IP

    端口信息

    Server1

    192.168.10.207

    mongod shard11:27017

    mongod shard12:27018

    mongod shard1:20000

    mongos1:30000

    Server2

    192.168.10.208

    mongod shard11:27017

    mongod shard12:27018

    mongod shard1:20000

    mongos1:30000

    Server3

    192.168.10.209

    mongod shard11:27017

    mongod shard12:27018

    mongod shard1:20000

    mongos1:30000

    軟件準備

    部署前請先關閉防火墻,因為防火墻有時候會屏蔽

    1 安裝mongoDB軟件

    下載mongodb

    解壓tar zxvf mongodb-linux-***.tar

    2 創建數據目錄

    Server1:

    mkdir -p /data/shard11 mkdir -p /data/shard21

    Server2:

    mkdir -p /data/shard12 mkdir -p /data/shard22

    Server3:

    mkdir -p /data/shard13 mkdir -p /data/shard23

    配置replice sets(副本集):

  • 配置shard1所用到的replicasets:

  • Server1:

    ./mongod -shardsvr -replSet shard1 -port 27017 -dbpath/data/shard11/ -oplogSize 100 -logpath /data/shard11.log -logappend --fork

    Server2:

    ./mongod -shardsvr -replSet shard1 -port 27017 -dbpath/data/shard12/ -oplogSize 100 -logpath /data/shard12.log -logappend --fork

    Server3:

    ./mongod -shardsvr -replSet shard1 -port 27017 -dbpath/data/shard13/ -oplogSize 100 -logpath /data/shard13.log -logappend –-fork

    初始化replica set

    用mongo連接其中一個mongod(例如:./mongo 192.168.10.207:27017)執行:

    > config = {_id:"shard1",members:[{_id:0,host:'192.168.10.207:27017'},{_id:1,host:'192.168.10.208:27017'},{_id:2,host:'192.168.10.209:27017'}]} > rs.initiate(config);

    2、同樣的方法,配置shard2用到的replica sets:

    Server1:

    ./mongod -shardsvr -replSet shard2 -port 27018 -dbpath/data/shard21/ -oplogSize 100 -logpath /data/shard21.log -logappend --fork

    Server2:

    ./mongod -shardsvr -replSet shard2 -port 27018 -dbpath/data/shard22/ -oplogSize 100 -logpath /data/shard22.log -logappend --fork

    Server3:

    ./mongod -shardsvr -replSet shard2 -port 27018 -dbpath/data/shard23/ -oplogSize 100 -logpath /data/shard23.log -logappend –-fork

    初始化replica set

    用mongo連接其中一個mongod(例如:./mongo 192.168.10.207:27017)執行:

    > config ={_id:"shard2",members:[{_id:0,host:'192.168.10.207:27018'},{_id:1,host:'192.168.10.208:27018'},{_id:2,host:'192.168.10.209:27018'}]} > rs.initiate(config);

    配置三臺config server:

    Server1:

    ./mongod -configsvr -dbpath /data/config -port 20000 -logpath/data/config.log -logappend --fork

    Server2:

    ./mongod -configsvr -dbpath /data/config -port 20000 -logpath/data/config.log -logappend --fork

    Server3:

    ./mongod -configsvr -dbpath /data/config -port 20000 -logpath/data/config.log -logappend --fork

    配置mongos:

    Server1

    ./mongos -configdb192.168.10.207:20000,192.168.10.208:20000,192.168.10.209:20000 -port 30000-chunkSize 5 -logpath /data/mongos.log -logappend --fork

    server2

    ./mongos -configdb192.168.10.207:20000,192.168.10.208:20000,192.168.10.209:20000 -port 30000-chunkSize 5 -logpath /data/mongos.log -logappend --fork

    server3

    ./mongos -configdb192.168.10.207:20000,192.168.10.208:20000,192.168.10.209:20000 -port 30000-chunkSize 5 -logpath /data/mongos.log -logappend --fork

    注釋:mongos不需要dbpath

    配置分片:

  • 連接mongos,并切換到admin ./mongo 192.168.10.207:30000/admin

  • >db admi

    2.加入shards

    如果shard是單臺服務器,用:

    >db.runCommand({ addshard :“[:]”})

    如果shard是replica sets,用:

    >db.runCommand({ addshard : “replicaSetName/[:],[:]..”})

    如本機執行:

    >db.runCommand({ addshard :“shard1/192.168.10.207:27017,192.168.10.208:27017,192.168.10.209:27017″,name:”s1″,maxsize:20480}); >db.runCommand({ addshard :“shard2/192.168.10.207:27018,192.168.10.208:27018, 192.168.10.209:27018″,name:”s2″,maxsize:20480})

    注釋:

    name為用于置頂shard的名字,不指定的話系統自動分配

    maxsize為指定各個shard可用的最大磁盤空間

    3.查看shard是否添加成功

    >db.runCommand({listshards:1})

    如果列出了以上兩個你家的shards,表示添加成功

    4.激活數據庫分片

    >db.runCommand({enablesharding:””})

    通過執行以上命令,可以讓數據庫跨shard,如果不執行這步,數據庫只會存放在一個shard,一旦激活數據庫分片,數據庫中不同的 collection將被存放在不同的shard上,但一個collection仍舊存放在同一個shard上,要使單個collection也分片,還 需單獨對collection作些操作

    如:

    >db.runCommand({enablesharding:"test"})

    查看數否生效:

    >db.printShardingStatus() sharding version: { "_id" : 1, "version" : 3 } shards: { "_id" : "s1", "host" : "shard1/192.168.10.207:27017,192.168.10.208:27017,192.168.10.209:27017" } { "_id" : "s2", "host" : "shard2/192.168.10.207:27018,192.168.10.208:27018,192.168.10.209:27018" } databases: { "_id" : "admin", "partitioned" : false, "primary" : "config" } { "_id" : "test", "partitioned" : true, "primary" : "s1" }

    注釋:

    一旦enable了個數據庫,mongos將會把數據庫里的不同數據集放在不同的分片上。除非數據集被分片(下面會設置),否則一個數據集的所有數據將放在一個分片上。

    Collecton分片:

    要使單個collection也分片存儲,需要給collections指定一個分片key,如下:

    > db.runCommand( {shardcollection : “”,key : })

    a. 分片的collection系統會自動創建一個索引(也可用戶提前創建好)
    b. 分片的collection只能有一個在分片key上的唯一索引,其它唯一索引不被允許

    分片collection例子:

    > db.runCommand({shardcollection:"test.c1",key:{id:1}}) > use test

    測試一下:

    > for(var i =0; i<20000; i++) db.c1.save({id:i,value:"111111"}) > db.c1.stats() { “sharded” : true, “ns” : “test.c1″, “count” : 200003, “size” : 25600384, “avgObjSize” : 128, “storageSize” : 44509696, “nindexes” : 2, “nchunks” : 15, “shards” : { “s1″ : { “ns” : “test.c1″, “count” : 141941, “size” : 18168448, “avgObjSize” : 128, “storageSize” : 33327616, “numExtents” : 8, “nindexes” : 2, “lastExtentSize” : 12079360, “paddingFactor” : 1, “flags” : 1, “totalIndexSize” : 11157504, “indexSizes” : { “_id_” : 5898240, “id_1″ : 5259264 }, “ok” : 1 }, “s2″ : { “ns” : “test.c1″, “count” : 58062, “size” : 7431936, “avgObjSize” : 128, “storageSize” : 11182080, “numExtents” : 6, “nindexes” : 2, “lastExtentSize” : 8388608, “paddingFactor” : 1, “flags” : 1, “totalIndexSize” : 4579328, “indexSizes” : { “_id_” : 2416640, “id_1″ : 2162688 }, “ok” : 1 } }, “ok” : 1 }

    如果出現以上相同信息,為系統部署正確

    附錄:

    mongod手冊:http://cn.docs.mongodb.org/manual/reference/mongod/

    服務器狀態查詢手冊:http://cn.docs.mongodb.org/manual/reference/server-status/

    數據庫統計參考手冊:http://cn.docs.mongodb.org/manual/reference/database-statistics/


    此文章并非轉載,我是看到很多地方總結出來寫的,但是里面也有別人的經驗,只為提供參考



    2年前 / 0℃ / 標簽:mongodb集群 mongodb 上一篇下一篇

    轉載于:https://blog.51cto.com/fangwei009/1531390

    總結

    以上是生活随笔為你收集整理的mongodb集群与分片的配置说明的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。