mongoDB 分片集群部署

2021-09-14 00:49:39 字數 3248 閱讀 9491

mongodb將大量的資料檔案進行切割,將切割的資料塊分別儲存到不同的片上,其中每個片為乙個副本集,而對外通過mongos提供統一介面,使用者實際上感覺不到內部分片機制。

replicaset(副本集):mongodb集群的一種實現方式,該副本集由一台活躍mongodb伺服器(節點)和兩台非活躍mongodb伺服器(節點)組成,其中活躍節點會由mongodb自動選舉產生,資料插入在活躍節點,備份到非活躍節點,預設非活躍節點不可進行讀寫操作,可配置在非活躍節點進行讀操作。

mongos:mongo路由器,對外遮蔽內部資料儲存,客戶端只需要連線mongos,mongos會根據實際情況將操作分發到不同的片(replica set)

shard:儲存資料的節點,可以是單個mongod或者副本集

作業系統:centos7.6

mongodb:v3.6.11

首先確定各個元件的數量,mongos 3個, config server 3個,資料分3片 shard server 3個,每個shard 有乙個副本乙個仲裁也就是 3 * 2 = 6 個,總共需要部署15個例項。這裡使用三颱機器進行測試,機器規劃如下圖所示:

1.建立目錄

在每台機器上分別建立mongos 、config 、 shard1 、shard2、shard3對應目錄:

mkdir -p /data/db/

mkdir -p /data/configdb

mkdir -p /data/logs

chown -r mongod.mongod /data/configdb/

chown -r mongod.mongod /data/logs/

chown -r mongod.mongod /data/db

# tree /data/

/data/

├── configdb

├── db

│ ├── shard1

│ ├── shard2

│ └── shard3

└── logs

6 directories, 0 files

2.配置shard server(分片服務)(1)在每台機器上分別啟動副本集成員:

(2)建立副本集並初始化:

複製集通過replsetinitiate命令(或mongo shell的rs.initiate())進行初始化

在設定mongodb副本集時,primary節點,second節點,仲裁節點,有可能資源配置(cpu或者記憶體)不均衡,所以要求某些節點不能成為primary。我們知道mongodb的設定:

登入成員主節點,設定節點成員:

192.168.20.215:

# mongo --port 27018

> config=,,]}

> rs.initiate(config)

192.168.20.216:

# mongo --port 27019

> config=,,]}

> rs.initiate(config)

192.168.20.217:

# mongo --port 27020

> config=,,]}

> rs.initiate(config)

replsetinitiate命令:> db.runcommand(,,]}})

3.配置config server(1)在每一台伺服器分別啟動配置伺服器:

(2)連線到任意一台配置伺服器上,建立配置伺服器副本集

# mongo --port 27016

> rs.initiate(,,]})

4.配置mongos(1)在每台機上啟動mongos路由服務

(2)新增shards成員

登入路由服務客戶端,新增分片到集群:

# mongo			#mongos啟動的27017埠

mongos> use admin

mongos> db.runcommand()

mongos> db.runcommand()

mongos> db.runcommand()

開啟資料庫的分片功能

mongos> use admin

mongos> db.runcommand()

開啟集合的分片功能:

mongos> use admin

mongos> db.runcommand(})

1.檢視分片db.shards.find()

mongos> use config

switched to db config

mongos> db.shards.find()

2.檢視集合狀態db.collectionname.status()

mongos> use mydb1

mongos> db.user.stats()

3.檢視分片資訊db.printshardingstatus()

4.插入資料測試:

mongodb部署分片集群

在3臺centos 6伺服器上部署mongodb分片集群,其中副本集 replica set 部署在不同的伺服器上,每個伺服器有乙個配置 config 副本集,兩個分片 sharding 副本集,以及乙個mongos服務。所以3臺伺服器總共需要部署12個服務。3臺伺服器ip分別是 172.16.66...

MongoDB集群分片

什麼是sharding?說白了就是把海量資料水平擴充套件的集群系統,資料分表儲存在sharding的各個節點上。mongodb的資料分開分為chunk,每個chunk都是collection中的一段連續的資料記錄,一般為200mb,超出則生成新的資料塊。構建sharding需要三種角色,shard伺...

mongodb分片 集群

目前在乙個機器上部署,ip 10.1.2.197,埠列表如下 埠埠埠路由服務 27061 路由服務 27062 路由服務 27063 配置服務 27071 配置服務 27072 配置服務 27073 副本集1 27011 副本集2 27021 副本集3 27031 副本集1 27012 副本集2 2...