集群搭建:分片
+
副本集
概述
背景mongodb
在replica set
每個從節點上面的資料庫均是對資料庫的全量拷貝,從節點壓力在高併發大資料量的場景下存在很大挑戰,同時考慮到後期
mongodb
集群的在資料壓力巨大時的擴充套件性,應對海量資料引出了分片機制。
分片概念
mongos
的路由程序進行操作。
基礎元件
mongos
,config server
,shard
,replica set
:資料庫集群請求的入口,所有請求需要經過
mongos
進行協調,無需在應用層面利用程式來進行路由選擇,
mongos
其自身是乙個請求分發中心,負責將外部的請求分發到對應的
shard
伺服器上,
mongos
作為統一的請求入口,為防止
mongos
單節點故障,一般需要對其做ha。
:配置伺服器,儲存所有資料庫元資料(分片,路由)的配置。
mongos
本身沒有物理儲存分片伺服器和資料路由資訊,只是存快取在記憶體中來讀取資料,
mongos
在第一次啟動或後期重啟時候,就會從
config server
中載入配置資訊,如果配置伺服器資訊發生更新會通知所有的
mongos
來更新自己的狀態,從而保證準確的請求路由,生產環境中通常也需要多個
config server
,防止配置檔案存在單節點丟失問題。
:在傳統意義上來講,如果存在海量資料,單台伺服器儲存
1t壓力非常大,無論考慮資料庫的硬碟,網路
io,又有
cpu,記憶體的瓶頸,如果多台進行分攤
1t的資料,到每台上就是可估量的較小資料,在
mongodb
集群只要設定好分片規則,通過
mongos
運算元據庫,就可以自動把對應的操作請求**到對應的後端分片伺服器上。
:在總體
mongodb
集群架構中,對應的分片節點,如果單台機器下線,對應整個集群的資料就會出現部分缺失,這是不能發生的,因此對於
shard
節點需要
replica set
來保證資料的可靠性,生產環境通常為
2個副本
+1個仲裁。
架構圖安裝部署
基礎環境
mongos
,三個config server
,單個伺服器上面執行不同角色的
shard
(為了後期資料分片均勻,將三颱
shard
在各個伺服器上充當不同的角色。),在乙個節點內採用
replica set
保證高可用,對應主機與埠資訊如下
ip元件
mongos
元件config server
shard
192.168.13.150
埠:20000
埠:21000
主節點:
22001
22002
22003
192.168.13.160
埠:20000
埠:21000
仲裁節點:
22001
22002
22003
192.168.13.165
埠:20000
埠:21000
副本節點:
22001
22002
22003
安裝部署
建立目錄
mongodb-1/mongodb-2/mongodb-3
建立目錄及日誌檔案
配置config server
副本集mongodb3.4
版本後要求配置伺服器也建立為副本集,在此副本集名稱:
replconf
config server
副本集配置檔案,並啟動服務
bind_ip = 0.0.0.0
鏈結數
日誌開啟
後台執行
配置伺服器
配置集replconf
三颱伺服器均啟動
config server
config server
集群已經配置完成,
mongodb-1
為primary
,mongdb-2/mongodb-3
為secondary
配置shard
集群shard
集群配置
配置bind_ip = 0.0.0.0
伺服器
副本集名稱
shard1
啟動shard
服務shard1
的22001
埠已經正常監聽,接下來登入
mongodb-1
伺服器進行
shard1
副本集初始化
為primary
為arbiter
為secondary
shard1
副本集已經配置完成,
mongodb-1
為primary
,mongodb-2
為arbiter
,mongodb-3
為secondary
。shard2
配置和shard3
配置shard2
的副本集初始化,在
mongodb-2
, 初始化
shard3
副本集在
mongodb-3
上進行操作。
配置檔案
bind_ip = 0.0.0.0
配置檔案
mongodb-2
上進行shard2
副本集初始化
登入mongodb-2
shard2
副本集狀態
為secondary
為primary
為arbiter
mongodb-3
進行shard3
副本集初始化
登入mongodb-3
shard3
副本集狀態
為arbiter
為secondary
為primary
shard
集群全部已經配置完畢。
配置路由伺服器
mongos
mongos
伺服器mongos
伺服器的配置是從記憶體中載入,所以自己沒有存在資料目錄
configdb
連線為配置伺服器集群
制定config server
集群config server
集群/shard
集群/mongos
服務均已啟動,但此時為設定分片,還不能使用分片功能。需要登入
mongos
啟用分片
mongos
測試一
mongos
上讓指定的資料庫、指定的集合分片生效。
admin
資料庫進行
開啟kaliarch
庫分片功能
指定資料庫裡需要分片的集合
tables
和片鍵_id
kaliarchdb
的 table1
表需要分片,根據
_id
自動分片到
shard1
,shard2
,shard3
上面去。
總count
的count數的
count數的
count
數mongos
,config server
,shard
集群均已經搭建部署完畢,在實際生產環境需要對前端的
mongos
做高可用來替身整體高可用。
測試二
檢視資料是否已經分片
登入從庫伺服器,檢視主從是否同步
後期運維
啟動關閉
的啟動順序是,先啟動配置伺服器,在啟動分片,最後啟動
mongos.
關閉時,直接
killall
殺掉所有程序
配置MongoDB3 04集群分片
網上大部分都是的mongo2.x集群分片了,咱寫個3.04的。由於公司採用磁碟陣列冗餘儲存,所以不考慮資料備份問題只是簡單的分片儲存資料進行測試的。配置結構如圖 伺服器配置 cpu雙核 8g記憶體 shard目錄掛載500g硬碟。伺服器列表 ip 職能192.168.6.117 config mon...
配置MongoDB3 04集群分片
網上大部分都是的mongo2.x集群分片了,咱寫個3.04的。由於公司採用磁碟陣列冗餘儲存,所以不考慮資料備份問題只是簡單的分片儲存資料進行測試的。配置結構如圖 伺服器配置 cpu雙核 8g記憶體 shard目錄掛載500g硬碟。伺服器列表 ip職能 192.168.6.117 config mon...
MongoDB分片集群搭建
1.搭建環境 os centos7 version 4.2.8 主機規劃 sharding role host port replica set mongos mongos 37017 shard1 host1 host2 host3 27117 shard1 shard2 host1 host2 ...