真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

MongoDB中怎么搭建分片集群-創(chuàng)新互聯(lián)

本篇文章為大家展示了MongoDB中怎么搭建分片集群,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、小程序設(shè)計(jì)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了天水免費(fèi)建站歡迎大家使用!

MongoDB分片集群基本組件介紹

mongos:數(shù)據(jù)庫(kù)集群請(qǐng)求的入口,所有請(qǐng)求需要經(jīng)過mongos進(jìn)行協(xié)調(diào),無需在應(yīng)用層面利用程序來進(jìn)行路由選擇,mongos其自身是一個(gè)請(qǐng)求分發(fā)中心,負(fù)責(zé)將外部的請(qǐng)求分發(fā)到對(duì)應(yīng)的shard服務(wù)器上,mongos作為統(tǒng)一的請(qǐng)求入口,為防止mongos單節(jié)點(diǎn)故障,一般需要對(duì)其做HA。

config server:配置服務(wù)器,存儲(chǔ)所有數(shù)據(jù)庫(kù)元數(shù)據(jù)(分片,路由)的配置。mongos本身沒有物理存儲(chǔ)分片服務(wù)器和數(shù)據(jù)路由信息,只是存緩存在內(nèi)存中來讀取數(shù)據(jù),mongos在第一次啟動(dòng)或后期重啟時(shí)候,就會(huì)從config server中加載配置信息,如果配置服務(wù)器信息發(fā)生更新會(huì)通知所有的mongos來更新自己的狀態(tài),從而保證準(zhǔn)確的請(qǐng)求路由,生產(chǎn)環(huán)境中通常也需要多個(gè)config server,防止配置文件存在單節(jié)點(diǎn)丟失問題。

shard:在傳統(tǒng)意義上來講,如果存在海量數(shù)據(jù),單臺(tái)服務(wù)器存儲(chǔ)1T壓力非常大,無論考慮數(shù)據(jù)庫(kù)的硬盤,網(wǎng)絡(luò)IO,又有CPU,內(nèi)存的瓶頸,如果多臺(tái)進(jìn)行分?jǐn)?T的數(shù)據(jù),到每臺(tái)上就是可估量的較小數(shù)據(jù),在mongodb集群只要設(shè)置好分片規(guī)則,通過mongos操作數(shù)據(jù)庫(kù),就可以自動(dòng)把對(duì)應(yīng)的操作請(qǐng)求轉(zhuǎn)發(fā)到對(duì)應(yīng)的后端分片服務(wù)器上。

replica set:在總體mongodb集群架構(gòu)中,對(duì)應(yīng)的分片節(jié)點(diǎn),如果單臺(tái)機(jī)器下線,對(duì)應(yīng)整個(gè)集群的數(shù)據(jù)就會(huì)出現(xiàn)部分缺失,這是不能發(fā)生的,因此對(duì)于shard節(jié)點(diǎn)需要replica set來保證數(shù)據(jù)的可靠性,生產(chǎn)環(huán)境通常為2個(gè)副本+1個(gè)仲裁。

MongoDB分片集群搭建架構(gòu)

架構(gòu):我們這次搭建的是三分片,每個(gè)分片三個(gè)副本集的分片集群

端口分布:mongos:20000 config:21000 shard1:22001 shard2:22002 shard3:22003

MongoDB分片集群搭建集群步驟

1.  各個(gè)機(jī)器上分別安裝MongoDb

安裝過程省略。只需要將安裝包COPY到各個(gè)服務(wù)器解壓即可

2. 分別在每臺(tái)機(jī)器建立conf、mongos、config、shard1、shard2、shard3六個(gè)目錄,因?yàn)閙ongos不存儲(chǔ)數(shù)據(jù),只需要建立日志文件目錄即可

mkdir -p /data/mongodb/mongos/{log,conf}
mkdir -p /data/mongodb/mongoconf/{data,log,conf}
mkdir -p /data/mongodb/shard1/{data,log,conf}
mkdir -p /data/mongodb/shard2/{data,log,conf}
mkdir -p /data/mongodb/shard3/{data,log,conf}
touch /data/mongodb/mongos/log/mongos.log
touch /data/mongodb/mongoconf/log/mongoconf.log
touch /data/mongodb/mongoconf/conf/mongoconf.conf
touch /data/mongodb/shard1/log/shard1.log
touch /data/mongodb/shard2/log/shard2.log
touch /data/mongodb/shard3/log/shard3.log

3.關(guān)閉防火墻

systemctl stop firewalld.service

4. Config server搭建副本集,添加如下內(nèi)容

cat>/data/mongodb/mongoconf/conf/mongoconf.conf<

5. 分別啟動(dòng)三臺(tái)服務(wù)器的config server

mongod -f /data/mongodb/mongoconf/conf/mongoconf.conf

6. 登錄任意一臺(tái)配置服務(wù)器,初始化配置副本集

mongo --port 21000
use admin
config = {
   _id : "replconf",
    members : [
        {_id : 0, host : "111.111.111.93:21000" },
        {_id : 1, host : "111.111.111.54:21000" },
        {_id : 2, host : "111.111.111.252:21000" }
    ]
}

7. 初始化config服務(wù)器的副本集

rs.initiate(config)

這一步非常重要,必須初始化成功。不成功的話,路由服務(wù)器與配置服務(wù)器連接不上。 

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

8. 三臺(tái)分片服務(wù)器搭建副本集,配置分片副本集(三臺(tái)機(jī)器)。

cat >/data/mongodb/shard1/conf/shard.conf <

9. 啟動(dòng)三臺(tái)服務(wù)器的shard1 server

mongod -f /data/mongodb/shard1/conf/shard.conf

登陸任意一臺(tái)服務(wù)器,初始化副本集

mongo --port 22001
use admin

10. 定義副本集配置,第三個(gè)節(jié)點(diǎn)的 “arbiterOnly”:true 代表其為仲裁節(jié)點(diǎn)。

config = {_id:"shard1",members:[             
{_id:0,host:"111.111.111.93:22001"},
{_id:1,host:"111.111.111.54:22001",arbiterOnly:true},
{_id:2,host:"111.111.111.252:22001"},]
}

初始化副本集配置

rs.initiate(config);

此時(shí)shard1 副本集已經(jīng)配置完成,mongodb-1為primary,mongodb-2為arbiter,mongodb-3為secondary。

同樣的操作進(jìn)行shard2配置和shard3配置

注意:進(jìn)行shard2的副本集初始化,在mongodb-2,初始化shard3副本集在mongodb-3上進(jìn)行操作。

同理,我們?cè)O(shè)置第二個(gè)分片

cat >/data/mongodb/shard2/conf/shard.conf <

并依次啟動(dòng)三臺(tái)服務(wù)器的shard2 server

## 啟動(dòng)shard2副本集
mongod -f /data/mongodb/shard2/conf/shard.conf

初始化副本集配置

## 進(jìn)入到shard2副本集
mongo --port 22002
use admin                
config = {_id:"shard2",members:[             
{_id:0,host:"111.111.111.93:22002"},
{_id:1,host:"111.111.111.54:22002"},
{_id:2,host:"111.111.111.252:22002",arbiterOnly:true},]
}
rs.initiate(config);

最后設(shè)置第三個(gè)分片副本集 ,配置文件配置項(xiàng)

cat >/data/mongodb/shard3/conf/shard.conf <

啟動(dòng)三臺(tái)服務(wù)器的shard3 server

mongod -f /data/mongodb/shard3/conf/shard.conf
## 進(jìn)入到shard3副本集
use admin                
config = {_id:"shard3",members:[             
{_id:0,host:"111.111.111.93:22003",arbiterOnly:true},
{_id:1,host:"111.111.111.54:22003"},
{_id:2,host:"111.111.111.252:22003"},]
}
rs.initiate(config);

11. 配置路由服務(wù)器mongos

目前三臺(tái)服務(wù)器的config服務(wù)器和shard服務(wù)器均已啟動(dòng),現(xiàn)在開始配置mongos服務(wù)的三副本集

由于mongos服務(wù)器的配置是從內(nèi)存中加載,所以自己沒有存在數(shù)據(jù)目錄configdb連接為config服務(wù)器集群

先啟動(dòng)config服務(wù)器和shard服務(wù)器,然后啟動(dòng)路由實(shí)例:(三臺(tái)機(jī)器)

mongs服務(wù)器配置文件

cat >/data/mongodb/mongos/conf/mongos.conf<

啟動(dòng)三臺(tái)服務(wù)器的mongos server

mongos -f /data/mongodb/mongos/conf/mongos.conf

目前搭建了mongodb config服務(wù)器、mongos服務(wù)器,各個(gè)shard服務(wù)器,不過應(yīng)用程序連接到mongos路由服務(wù)器并不能使用分片機(jī)制,還需要在程序里設(shè)置分片配置,讓分片生效,意即將mongos,shard,config三類服務(wù)器串起來即為分片服務(wù)器了

登陸任意一臺(tái)mongos

mongo --port 20000

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

use admin

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

use admin
db.runCommand({addshard:"shard1/111.111.111.93:22001,111.111.111.54:22001,111.111.111.252:22001"})
db.runCommand({addshard:"shard2/111.111.111.93:22002,111.111.111.54:22002,111.111.111.252:22002"})
db.runCommand({addshard:"shard3/111.111.111.93:22003,111.111.111.54:22003,111.111.111.252:22003"})

查看集群狀態(tài)

sh.status()

12. 配置分片

目前配置服務(wù)、路由服務(wù)、分片服務(wù)、副本集服務(wù)都已經(jīng)串聯(lián)起來了,但我們的目的是希望插入數(shù)據(jù),數(shù)據(jù)能夠自動(dòng)分片。連接在mongos上,準(zhǔn)備讓指定的數(shù)據(jù)庫(kù)、指定的集合分片生效。 

指定prod_sharding分片生效

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

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

db.runCommand( { shardcollection : "prod_sharding.sharding_tbl",key : {"albumId":1,"itemId":1} } )
db.runCommand( { shardcollection : "prod_sharding.sharding_tbl_2",key : {"albumId":"hashed"} } )
db.runCommand( { shardcollection : "prod_sharding.sharding_tbl_3",key : {"albumId":1,"itemId":1} } )
db.runCommand( { shardcollection : "prod_sharding.sharding_tbl_5",key : {"albumId":"hashed"} } )

查看分配狀態(tài)

db.sharding_tbl.stats();

創(chuàng)建用戶

use prod_sharding
db.createUser(
   {
     user: "prod_sharding",
     pwd: "prod_sharding_123",
     roles: [ "dbAdmin", "dbOwner" ]
   }
)

連接DB

mongo 111.111.111.93:20000/prod_test -uprod_test -pprod_test123

上述內(nèi)容就是MongoDB中怎么搭建分片集群,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道。


文章題目:MongoDB中怎么搭建分片集群-創(chuàng)新互聯(lián)
標(biāo)題來源:http://weahome.cn/article/diopsi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部