天天看點

搭建 MongoDB分片(sharding) / 分區 / 叢集環境1. 安裝 MongoDB2. config server配置伺服器3. 配置分片副本集3.1 設定第一個分片副本集3.2 設定第二個分片副本集3.3 設定第三個分片副本集3.4 配置路由伺服器 mongos4. 串聯路由伺服器5. 啟用集合分片生效後期運維Contact

三台機器

關閉防火牆

192.168.252.121

192.168.252.122

192.168.252.123

mongos

config server

shard server1 主節點

shard server1 副節點

shard server1 仲裁

shard server2 仲裁

shard server2 主節點

shard server2 副節點

shard server3 副節點

shard server3 仲裁

shard server3 主節點

端口配置設定:

下載下傳并且安裝

所有版本二進制檔案,自行下載下傳

改名

分别在每台機器建立conf、mongos、config、shard1、shard2、shard3六個目錄,因為mongos不存儲資料,隻需要建立日志檔案目錄即可。

配置環境變量

使立即生效

mongodb3.4以後要求配置伺服器也建立副本集,不然叢集搭建不成功。

(三台機器)添加配置檔案

啟動三台伺服器的config server

登入任意一台配置伺服器,初始化配置副本集

連接配接 MongoDB

config 變量

初始化副本集

其中,"_id" : "configs"應與配置檔案中配置的 replicaction.replSetName 一緻,"members" 中的 "host" 為三個節點的 ip 和 port

響應内容如下

此時會發現終端上的輸出已經有了變化。

查詢狀态

(三台機器)設定第一個分片副本集

配置檔案

啟動三台伺服器的shard1 server

登陸任意一台伺服器,初始化副本集(除了192.168.252.123)

使用admin資料庫

定義副本集配置

初始化副本集配置

設定第二個分片副本集

啟動三台伺服器的shard2 server

啟動三台伺服器的shard3 server

登陸任意一台伺服器,初始化副本集(除了192.168.252.121)

(三台機器)先啟動配置伺服器和分片伺服器,後啟動路由執行個體啟動路由執行個體:

啟動三台伺服器的mongos server

目前搭建了mongodb配置伺服器、路由伺服器,各個分片伺服器,不過應用程式連接配接到mongos路由伺服器并不能使用分片機制,還需要在程式裡設定分片配置,讓分片生效。

登陸任意一台mongos

串聯路由伺服器與配置設定副本集

檢視叢集狀态

目前配置服務、路由服務、分片服務、副本集服務都已經串聯起來了,但我們的目的是希望插入資料,資料能夠自動分片。連接配接在mongos上,準備讓指定的資料庫、指定的集合分片生效。

指定testdb分片生效

指定資料庫裡需要分片的集合和片鍵,哈希id 分片

我們設定testdb的 table1 表需要分片,根據 id 自動分片到 shard1 ,shard2,shard3 上面去。要這樣設定是因為不是所有mongodb 的資料庫和表 都需要分片!

測試分片配置結果

連接配接 MongoDB 路由服務

切換到 testdb 資料庫

插入測試資料

總條數

檢視分片情況如下

shard1: "count": 33755

shard2: "count": 33143,

shard3: "count": 33102

結論資料基本均勻

分組檢視總數量是:100000

參考

手把手教你 MongoDB 的安裝與詳細使用(一)

<a href="http://www.ymq.io/2018/01/26/MongoDB-1/">http://www.ymq.io/2018/01/26/MongoDB-1/</a>

手把手教你 MongoDB 的安裝與詳細使用(二)

<a href="http://www.ymq.io/2018/01/29/MongoDB-2/">http://www.ymq.io/2018/01/29/MongoDB-2/</a>

建立索引

啟動

mongodb的啟動順序是,先啟動配置伺服器,在啟動分片,最後啟動mongos.

啟動報錯

删除 mongod.lock

關閉

關閉時,直接killall殺掉所有程序

參考:

作者:鵬磊

版權歸作者所有,轉載請注明出處

Wechat:關注公衆号,搜雲庫,專注于開發技術的研究與知識分享