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
對應目錄:
2.配置shard server(分片服務)(1)在每台機器上分別啟動副本集成員: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)建立副本集並初始化:
複製集通過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)
3.配置config server(1)在每一台伺服器分別啟動配置伺服器:replsetinitiate命令:
> db.runcommand(,,]}})
(2)連線到任意一台配置伺服器上,建立配置伺服器副本集
4.配置mongos(1)在每台機上啟動mongos路由服務# mongo --port 27016
> rs.initiate(,,]})
(2)新增shards成員
登入路由服務客戶端,新增分片到集群:
開啟資料庫的分片功能# mongo #mongos啟動的27017埠
mongos> use admin
mongos> db.runcommand()
mongos> db.runcommand()
mongos> db.runcommand()
開啟集合的分片功能:mongos> use admin
mongos> db.runcommand()
1.檢視分片mongos> use admin
mongos> db.runcommand(})
db.shards.find()
:
2.檢視集合狀態mongos> use config
switched to db config
mongos> db.shards.find()
db.collectionname.status()
:
3.檢視分片資訊mongos> use mydb1
mongos> db.user.stats()
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...