成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

MongoDB分片部署實(shí)踐

孫淑建 / 2853人閱讀

摘要:本篇記錄高可用模式部署步驟,其他部署方式見上一篇。首先準(zhǔn)備機(jī)器,我這里是在公司云平臺創(chuàng)建了三臺,分別是,,。分片的選擇策略可以參考官方文檔。

本篇記錄MongoDB高可用模式部署步驟,其他部署方式見上一篇。

首先準(zhǔn)備機(jī)器,我這里是在公司云平臺創(chuàng)建了三臺DB server,ip分別是10.199.144.84,10.199.144.89,10.199.144.90。

分別安裝mongodb最新穩(wěn)定版本:

bashwget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.4.12.tgz
tar -xzvf mongodb-linux-x86_64-2.4.12.tgz
mv mongodb-linux-x86_64-2.4.12 /usr/lib

做個(gè)軟連接或者按照官方的做法把mongo shell都添加到環(huán)境變量:

bashln -s /usr/lib/mongodb-linux-x86_64-2.4.12/bin/mongo /usr/bin/mongo
ln -s /usr/lib/mongodb-linux-x86_64-2.4.12/bin/mongos /usr/bin/mongos
ln -s /usr/lib/mongodb-linux-x86_64-2.4.12/bin/mongod /usr/bin/mongod

分別創(chuàng)建存儲數(shù)據(jù)的目錄:

bashmkdir -p /data/mongodb && cd /data/mongodb/ && mkdir -p conf/data conf/log mongos/log shard{1..3}/data shard{1..3}/log

分別配置啟動(dòng)config服務(wù)器:

bashmongod --configsvr --dbpath /data/mongodb/conf/data --port 27100 --logpath /data/mongodb/conf/confdb.log --fork --directoryperdb

確保config服務(wù)都啟動(dòng)之后,啟動(dòng)路由服務(wù)器(mongos):

bashmongos --configdb 10.199.144.84:27100,10.199.144.89:27100,10.199.144.90:27100 --port 27000 --logpath /data/mongodb/mongos/mongos.log --fork

分別配置啟動(dòng)各個(gè)分片副本集,這里副本集名分別叫shard1,shard2shard3

bashmongod --shardsvr --replSet shard1 --port 27001 --dbpath /data/mongodb/shard1/data --logpath /data/mongodb/shard1/log/shard1.log --directoryperdb --fork

mongod --shardsvr --replSet shard2 --port 27002 --dbpath /data/mongodb/shard2/data --logpath /data/mongodb/shard2/log/shard2.log --directoryperdb --fork

mongod --shardsvr --replSet shard3 --port 27003 --dbpath /data/mongodb/shard3/data --logpath /data/mongodb/shard3/log/shard3.log --directoryperdb --fork

接下來配置副本集,假設(shè)使用如下的架構(gòu),每臺物理機(jī)都有一個(gè)主節(jié)點(diǎn),一個(gè)副本節(jié)點(diǎn)和一個(gè)仲裁節(jié)點(diǎn):

配置shard1(登陸84,沒有顯式指定主節(jié)點(diǎn)時(shí),會選擇登陸的機(jī)器為主節(jié)點(diǎn)):

bashmongo --port 27001
use admin
rs.initiate({
    _id: "shard1",
    members: [
        {_id: 84, host: "10.199.144.84:27001"},
        {_id: 89, host: "10.199.144.89:27001"},
        {_id: 90, host: "10.199.144.90:27001", arbiterOnly: true}
    ]
});

配置shard2(登陸89):

bashmongo --port 27001
use admin
rs.initiate({
    _id: "shard2",
    members: [
        {_id: 84, host: "10.199.144.84:27002", arbiterOnly: true},
        {_id: 89, host: "10.199.144.89:27002"},
        {_id: 90, host: "10.199.144.90:27002"}
    ]
});

配置shard3(登陸90):

bashmongo --port 27001
use admin
rs.initiate({
    _id: "shard3",
    members: [
        {_id: 84, host: "10.199.144.84:27002"},
        {_id: 89, host: "10.199.144.89:27002", arbiterOnly: true},
        {_id: 90, host: "10.199.144.90:27002"}
    ]
});

下面設(shè)置路由到分片集群配置,隨便登陸一臺機(jī)器,假設(shè)是84:

bashmongo --port 27000
use admin
db.runCommand({addShard: "shard1/10.199.144.84:27001,10.199.144.89:27001,10.199.144.90:27001"});
db.runCommand({addShard: "shard2/10.199.144.84:27002,10.199.144.89:27002,10.199.144.90:27002"});
db.runCommand({addShard: "shard3/10.199.144.84:27003,10.199.144.89:27003,10.199.144.90:27003"});

查看配置好的shard:

bashmongo --port 27000
use admin
db.runCommand({listshards: 1});

結(jié)果:

bash{
    "shards" : [
        {
            "_id" : "shard1",
            "host" : "shard1/10.199.144.84:27001,10.199.144.89:27001"
        },
        {
            "_id" : "shard2",
            "host" : "shard2/10.199.144.89:27002,10.199.144.90:27002"
        },
        {
            "_id" : "shard3",
            "host" : "shard3/10.199.144.90:27003,10.199.144.84:27003"
        }
    ],
    "ok" : 1
}

其中仲裁(ARBITER)節(jié)點(diǎn)沒有列出來。

下面測試分片:

bashmongo --port 27000
use admin
db.runCommand({enablesharding: "dbtest"});
db.runCommand({shardcollection: "dbtest.coll1", key: {id: 1}});
use dbtest;
for(var i=0; i<10000; i++) db.coll1.insert({id: i, s: "str_" + i});

如果dbtest已經(jīng)存在,需要確保它已經(jīng)以id建立了索引!

過上一段時(shí)間之后,運(yùn)行db.coll1.stats()顯式分片狀態(tài):

bash{
    "sharded" : true,
    "ns" : "dbtest.coll1",
    "count" : 10000,
    ...
    "shards" : {
        "shard1" : {
            "ns" : "dbtest.coll1",
            "count" : 0,
            "size" : 0,
            ...
        },
        "shard2" : {
            "ns" : "dbtest.coll1",
            "count" : 10000,
            "size" : 559200,
            ...
        }
    }
    ...
}

可以看到,這里分片已經(jīng)生效,只是分配不均勻,所有的數(shù)據(jù)都存在了shard2中了。分片key的選擇策略可以參考官方文檔。在2.4版本中,使用hashed shard key算法保證文檔均勻分布:

bashmongo --port 27000
use admin
sh.shardCollection("dbtest.coll1", {id: "hashed"});

使用hashed算法之后,做同樣的測試,插入的數(shù)據(jù)基本均勻分布:

bash{
    "sharded" : true,
    "ns" : "dbtest.coll1",
    "count" : 10000,
    ...
    "shards" : {
        "shard1" : {
            "ns" : "dbtest.coll1",
            "count" : 3285,
            "size" : 183672,
            ...
        },
        "shard2" : {
            "ns" : "dbtest.coll1",
            "count" : 3349,
            "size" : 187360,
            ...
        },
        "shard3" : {
            "ns" : "dbtest.coll1",
            "count" : 3366,
            "size" : 188168,
            ...
        }
    }
}

更多資料,請參考MongoDB Sharding。

在應(yīng)用程序里,使用MongoClient創(chuàng)建db連接:

javascriptMongoClient.connect("mongodb://10.199.144.84:27000,10.199.144.89:27000,10.199.144.90:27000/dbtest?w=1", function(err, db) {
    ;
});

本篇原地址:https://github.com/chemdemo/chemdemo.github.io/issues/9

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/18720.html

相關(guān)文章

  • TiDB和MongoDB分片集群架構(gòu)比較

    摘要:此文已由作者溫正湖授權(quán)網(wǎng)易云社區(qū)發(fā)布。分片集群通過就可以實(shí)現(xiàn)負(fù)載均衡,不需要單獨(dú)部署負(fù)載均衡組件。是一個(gè)集群,通過協(xié)議保持?jǐn)?shù)據(jù)的一致性副本數(shù)量可配置,默認(rèn)保存三副本,并通過做負(fù)載均衡調(diào)度。 此文已由作者溫正湖授權(quán)網(wǎng)易云社區(qū)發(fā)布。 歡迎訪問網(wǎng)易云社區(qū),了解更多網(wǎng)易技術(shù)產(chǎn)品運(yùn)營經(jīng)驗(yàn)。 最近閱讀了TiDB源碼的說明文檔,跟MongoDB的分片集群做了下簡單對比。 首先展示TiDB的整體架構(gòu) ...

    KaltZK 評論0 收藏0
  • Leaf in the Wild: Stratio整合Apache和MongoDB為世界上最大的銀行

    摘要:以及大數(shù)據(jù)平臺都已經(jīng)進(jìn)行了集成并且處于企業(yè)就緒狀態(tài)。因此,顧客避免浪費(fèi)時(shí)間在安裝配置及監(jiān)控系統(tǒng)方面。注意防止數(shù)據(jù)頻繁移動(dòng)。 本文源地址:http://www.mongoing.com/blog/post/leaf-in-the-wild-stratio-integrates-apache-spark-and-mongodb-to-unlock-new-customer-insights...

    BDEEFE 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<