mongo分片集群搭建筆記

????????在這此前建議先了解一下mongo的片鍵概念下梢,結(jié)合自己的業(yè)務(wù)關(guān)系確定一個(gè)合適的片鍵巩搏,才能更好的發(fā)揮集群的作用册舞。

進(jìn)入正題。

Linux centOs 7.4

mongo

首先拷貝mongo安裝包3.0版本到usr/local目錄下并解壓

在101蹬挤,102缚窿,103 三臺(tái)服務(wù)器上分別

創(chuàng)建文件

chown fanml:fanml /usr/local/mongodb

mkdir /data

chown fanml:fanml? /data/

mkdir -p /usr/local/mongodb/conf

mkdir -p /data/mongodb/mongos/log

mkdir -p /data/mongodb/config/data

mkdir -p /data/mongodb/config/log

mkdir -p /data/mongodb/shard1/data

mkdir -p /data/mongodb/shard1/log

mkdir -p /data/mongodb/shard2/data

mkdir -p /data/mongodb/shard2/log

mkdir -p /data/mongodb/shard3/data

mkdir -p /data/mongodb/shard3/log

并確定集群對(duì)外的端口,防火墻要開(kāi)放這些端口

mongos:27000

config:21000

shard1:27001

shard2:27002

shard3:27003

沒(méi)有numactl命令焰扳,使用yum安裝

yum install -y numactl

1倦零、config server配置服務(wù)器

vi /usr/local/mongodb/conf/config.conf



## content

systemLog:

? destination: file

? logAppend: true

? path: /data/config/log/config.log

# Where and how to store data.

storage:

? dbPath: /data/config/data

? journal:

? ? enabled: true

# how the process runs

processManagement:

? fork: true

? pidFilePath: /data/config/log/configsrv.pid

# network interfaces

net:

? port: 21000

? bindIp: 192.168.168.104

#operationProfiling:

replication:

? ? replSetName: config? ? ? ?

sharding:

? ? clusterRole: configsvr



啟動(dòng)配置服務(wù)

numactl --interleave=all mongod --config /usr/local/mongodb/conf/config.conf

分別在三臺(tái)機(jī)子上配置

登錄任意一臺(tái)初始化副本集

#連接

mongo --port 21000

#config變量

config = {

...? ? _id : "config",

...? ? members : [

...? ? ? ? {_id : 0, host : "192.168.168.102:21000" },

...? ? ? ? {_id : 1, host : "192.168.168.103:21000" },

...? ? ? ? {_id : 2, host : "192.168.168.104:21000" }

...? ? ]

... }

#初始化副本集

rs.initiate(config)

#查看分區(qū)狀態(tài)

rs.status();

其中误续,"_id" : "configs"應(yīng)與配置文件中配置的 replicaction.replSetName 一致,"members" 中的 "host" 為三個(gè)節(jié)點(diǎn)的ip和port

這樣配置服務(wù)器就配置好了

2扫茅、配置分片

vi /usr/local/mongodb/conf/shard1.conf



#配置文件內(nèi)容

# where to write logging data.

systemLog:

? destination: file

? logAppend: true

? path: /data/shard1/log/shard1.log

# Where and how to store data.

storage:

? dbPath: /data/shard1/data

? journal:

? ? enabled: true

# how the process runs

processManagement:

? fork: true

? pidFilePath: /data/shard1/log/shard1.pid

# network interfaces IP對(duì)應(yīng)各自的IP地址

net:

? port: 27001

? bindIp: 192.168.168.102?

#operationProfiling:

replication:

? ? replSetName: shard1

sharding:

? ? clusterRole: shardsvr



啟動(dòng)

numactl --interleave=all mongod --config /usr/local/mongodb/conf/shard1.conf

numactl --interleave=all mongod? --config? /usr/local/mongodb/conf/shard2.conf

numactl --interleave=all mongod? --config? /usr/local/mongodb/conf/shard3.conf

繼續(xù)在三臺(tái)服務(wù)器上配置分片2蹋嵌,3并啟動(dòng)

登錄任意一臺(tái)初始化分片副本集

初始化分片1副本集

mongo 192.168.1.202:27001

#使用admin數(shù)據(jù)庫(kù)

use admin

#定義副本集配置

config = {

...? ? _id : "shard1",

...? ? members : [

...? ? ? ? {_id : 0, host : "192.168.168.102:27001" },

...? ? ? ? {_id : 1, host : "192.168.168.103:27001" },

...? ? ? ? {_id : 2, host : "192.168.168.104:27001" }

...? ? ]

... }

config = {

...? ? _id : "shard2",

...? ? members : [

...? ? ? ? {_id : 0, host : "192.168.168.102:27002" },

...? ? ? ? {_id : 1, host : "192.168.168.103:27002" },

...? ? ? ? {_id : 2, host : "192.168.168.104:27002" }

...? ? ]

... }

config = {

...? ? _id : "shard3",

...? ? members : [

...? ? ? ? {_id : 0, host : "192.168.168.102:27003" },

...? ? ? ? {_id : 1, host : "192.168.168.103:27003" },

...? ? ? ? {_id : 2, host : "192.168.168.104:27003" }

...? ? ]

... }

#初始化副本集配置

rs.initiate(config);

#查看分區(qū)狀態(tài)

rs.status();

4.配置 mongos



systemLog:

? destination: file

? logAppend: true

? path: /data/mongos/log/mongos.log

processManagement:

? fork: true

#? pidFilePath: /usr/local/mongodb/mongos.pid

# network interfaces

net:

? port: 27000

? bindIp: 192.168.168.104

#監(jiān)聽(tīng)的配置服務(wù)器,只能有1個(gè)或者3個(gè) configs為配置服務(wù)器的副本集名字

sharding:

? configDB: config/192.168.168.102:21000,192.168.168.103:21000,192.168.168.104:21000



啟用mongos

mongos? --config? /usr/local/mongodb/conf/mongos.conf

mongos可在多臺(tái)服務(wù)器上配置,此端口為對(duì)外的端口葫隙,供客戶端調(diào)用

此為Java調(diào)用示例

mongo.url=192.168.168.7:27018,192.168.168.7:27019,192.168.168.7:27020

mongoUrlitem = loadAllProperties.get("mongo.url").toString().split(",");

public static MongoClient openMongoConnection()?

{

if (mongoClient == null) {

try {

List addresses = new ArrayList<>();

for (int i = 0; i < mongoUrlitem.length; i++) {

ServerAddress seed = new ServerAddress(mongoUrlitem[i]);

addresses.add(seed);

}

mongoClient = new MongoClient(addresses);

} catch (Exception e) {

// TODO: handle exception

log.error("Open MongoClient Exception : ", e);

}

}

return mongoClient;

}


5栽烂、啟用分片

mongo --port 27000

#使用admin數(shù)據(jù)庫(kù)

use? admin

#串聯(lián)路由服務(wù)器與分配副本集

sh.addShard("shard1/192.168.168.102:27001,192.168.168.102:27001,192.168.168.102:27001")

sh.addShard("shard2/192.168.168.103:27002,192.168.168.103:27002,192.168.168.103:27002")

sh.addShard("shard3/192.168.168.104:27003,192.168.168.104:27003,192.168.168.104:27003")

#查看集群狀態(tài)

sh.status()

最后,分片集群具備靈活性可以根據(jù)業(yè)務(wù)關(guān)系決定是否啟用分片

連接mongos

可以指定數(shù)據(jù)庫(kù)LicenseFile啟用分片機(jī)制

db.runCommand( { enablesharding :"LicenseFile"});

#指定數(shù)據(jù)庫(kù)里需要分片的集合和片鍵

db.runCommand( { shardcollection : "LicenseFile.licenseFile",key : {id: 1} } )

測(cè)試

use LicenseFile

測(cè)試

for (var i = 1; i <= 100000; i++)db.licenseFile.save({id:i,"test1":"testval1"});

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末恋脚,一起剝皮案震驚了整個(gè)濱河市腺办,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌糟描,老刑警劉巖怀喉,帶你破解...
    沈念sama閱讀 222,627評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異船响,居然都是意外死亡躬拢,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)见间,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)估灿,“玉大人,你說(shuō)我怎么就攤上這事缤剧。” “怎么了域慷?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,346評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵荒辕,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我犹褒,道長(zhǎng)抵窒,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,097評(píng)論 1 300
  • 正文 為了忘掉前任叠骑,我火速辦了婚禮李皇,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘宙枷。我一直安慰自己掉房,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布慰丛。 她就那樣靜靜地躺著卓囚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪诅病。 梳的紋絲不亂的頭發(fā)上哪亿,一...
    開(kāi)封第一講書(shū)人閱讀 52,696評(píng)論 1 312
  • 那天粥烁,我揣著相機(jī)與錄音,去河邊找鬼蝇棉。 笑死讨阻,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的篡殷。 我是一名探鬼主播钝吮,決...
    沈念sama閱讀 41,165評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼贴唇!你這毒婦竟也來(lái)了搀绣?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 40,108評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤戳气,失蹤者是張志新(化名)和其女友劉穎链患,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體瓶您,經(jīng)...
    沈念sama閱讀 46,646評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡麻捻,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了呀袱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贸毕。...
    茶點(diǎn)故事閱讀 40,861評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖夜赵,靈堂內(nèi)的尸體忽然破棺而出明棍,到底是詐尸還是另有隱情,我是刑警寧澤寇僧,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布摊腋,位于F島的核電站,受9級(jí)特大地震影響嘁傀,放射性物質(zhì)發(fā)生泄漏兴蒸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評(píng)論 3 336
  • 文/蒙蒙 一细办、第九天 我趴在偏房一處隱蔽的房頂上張望橙凳。 院中可真熱鬧,春花似錦笑撞、人聲如沸岛啸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,698評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)值戳。三九已至,卻和暖如春炉爆,著一層夾襖步出監(jiān)牢的瞬間堕虹,已是汗流浹背卧晓。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,804評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留赴捞,地道東北人逼裆。 一個(gè)月前我還...
    沈念sama閱讀 49,287評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像赦政,于是被迫代替她去往敵國(guó)和親胜宇。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容