MongoDB Sharded Cluster

Sharding 是 MongoDB 中的一個概念,它將大型資料集拆分為多個 MongoDB 例項中的小資料集。

有時,MongoDB 中的資料會非常龐大​​,針對這些大資料集的查詢會導致伺服器上的大量 CPU 利用率。為了解決這種情況,MongoDB 有一個 Sharding 的概念,它基本上是跨多個 MongoDB 例項分割資料集。

可能大小的集合實際上分為多個集合或 Shards,因為它們被呼叫。邏輯上所有分片都作為一個集合工作。

實現分片

通過使用只是一組 MongoDB 例項的叢集來實現碎片。

碎片的組成部分包括

  1. Shard - 這是基本的東西,這只是一個包含資料子集的 MongoDB 例項。在生產環境中,所有分片都必須是副本集的一部分。
  2. 配置伺服器 - 這是一個 mongodb 例項,它儲存有關叢集的後設資料,基本上是關於將儲存分片資料的各種 mongodb 例項的資訊。
  3. 路由器 - 這是一個 mongodb 例項,它基本上負責將客戶端傳送的命令重定向到正確的伺服器。

步驟 1: 為配置伺服器建立一個單獨的資料庫。

mkdir /data/configdb

步驟 2: 在配置模式下啟動 mongodb 例項。假設我們有一個名為 ServerD 的伺服器作為我們的配置伺服器,我們需要執行以下命令將伺服器配置為配置伺服器。

mongod –configdb ServerD: 27019

步驟 3: 通過指定配置伺服器啟動 mongos 例項

mongos –configdb ServerD: 27019

步驟 4: 從 mongo shell 連線到 mongo 的例項

mongo –host ServerD –port 27017

步驟 5: 如果你需要將伺服器 A 和伺服器 B 新增到群集,請發出以下命令

sh.addShard("ServerA:27017")
sh.addShard("ServerB:27017")

步驟 6: 為資料庫啟用分片。因此,如果我們需要對 Employeedb 資料庫進行分片,請發出以下命令

sh.enableSharding(Employeedb)

步驟 7: 為集合啟用分片。因此,如果我們需要對 Employee 集合進行分片,請發出以下命令

Sh.shardCollection("db.Employee" , { "Employeeid" : 1 , "EmployeeName" : 1})