mongodb 3 4 集群搭建 分片 副本集

2021-08-19 20:57:09 字數 4301 閱讀 1375

集群搭建:分片

+

副本集

概述

背景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 ...