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})