{MongDB} MongoDB Sharding

概念

MongoDB Shard Cluster

分片集群由以下三个部分组成:
Shard:分片
mongos:路由
config servers:存储元数据和配置


{MongDB} MongoDB Sharding_第1张图片
sharded-cluster-production-architecture.png

Shard Key

Shard key必须是每个文档都含有的一个或多个不可变字段。
对于非空集合,Shard Key上必须已经创建了索引。对于空集合,如果Key没有索引,MongoDB会自动为Key创建索引。

Sharding Strategy

哈希


{MongDB} MongoDB Sharding_第2张图片
sharding-hash-based.png

范围

{MongDB} MongoDB Sharding_第3张图片
sharding-range-based.png

标签感知

{MongDB} MongoDB Sharding_第4张图片
sharded-cluster-tag-aware.png

实际操作

  1. 创建Config Server副本集
    1.1 启动每个配置副本
    修改配置文件如下:
    sharding:
    clusterRole: configsvr
    replication:
    replSetName:
    然后启动Mongod
    1.2 连接到某一台配置服务
    1.3 运行初始化命令
    rs.initiate(
    {
    _id : ,
    members: [
    { _id : 0, host : "s1-mongo1.example.net:27017" },
    { _id : 1, host : "s1-mongo2.example.net:27017" },
    { _id : 2, host : "s1-mongo3.example.net:27017" }
    ]
    }
    )

  2. 创建分片副本集
    2.1 启动每一台分片
    修改配置文件如下:
    sharding:
    clusterRole: shardsvr
    replication:
    replSetName:

2.2 连接到某一台
2.3 初始化分片
rs.initiate(
{
_id : ,
members: [
{ _id : 0, host : "s1-mongo1.example.net:27017" },
{ _id : 1, host : "s1-mongo2.example.net:27017" },
{ _id : 2, host : "s1-mongo3.example.net:27017" }
]
}
)

  1. Mongos
    3.1 启动Mongos
    修改配置如下:
    sharding:
    configDB: /cfg1.example.net:27017,cfg2.example.net:27017,...
    3.2 连接到Mongos
    3.3 将分片加到集群
    sh.addShard( "/s1-mongo1.example.net:27017")
    3.4 允许某个数据库分片
    sh.enableSharding("")

  2. 集合分片
    sh.shardCollection(".", { : } )
    如果想要采用哈希策略。那么根据前面提到的,Shard Key需要已经建立了Hash Index。然后:
    sh.shardCollection( "database.collection", { : "hashed" } )

你可能感兴趣的:({MongDB} MongoDB Sharding)