总容量 / 2T = 预计分片数量
工作集大小 / (单服务器内存容量 * 0.6) = 预计分片数量
并发总数 / (单服务器并发 * 0.7) = 预计分片数量
集群名 replicate
,构建分片集群时需要用到
集群名 shard
,构建分片集群时需要用到
# 启动分片节点
# --shardsvr 必须指定,指定了才能被加入分片
# --replSet 指定复制集群名
mongod --bind_ip 0.0.0.0 --replSet replicate --dbpath /data/db --logpath /var/log/mongo/mongod.log --port 27017 --fork --shardsvr
# 构建 config 集群
rs.initiate({
"_id": "replicate",
"members": [
{
"_id": 0,
"host": "10.0.0.2:27017"
},
{
"_id": 1,
"host": "10.0.0.3:27017"
},
{
"_id": 2,
"host": "10.0.0.4:27017"
}
]
})
# 启动分片节点
# --shardsvr 必须指定,指定了才能被加入分片
# --replSet 指定复制集群名,区分其他复制集群
mongod --bind_ip 0.0.0.0 --replSet shard --dbpath /data/db --logpath /var/log/mongo/mongod.log --port 27017 --fork --shardsvr
# 构建 config 集群
rs.initiate({
"_id": "shard",
"members": [
{
"_id": 0,
"host": "10.0.0.5:27017"
},
{
"_id": 1,
"host": "10.0.0.6:27017"
},
{
"_id": 2,
"host": "10.0.0.7:27017"
}
]
})
# 启动 config 节点
# --configsvr 必须指定
# --replSet 指定复制集群名,区分其他复制集群
mongod --bind_ip 0.0.0.0 --replSet config --dbpath /data/db --logpath /var/log/mongo/mongod.log --port 27017 --fork --configsvr
# 构建 config 集群
rs.initiate({
"_id": "config",
"members": [
{
"_id": 0,
"host": "10.0.0.8:27017"
},
{
"_id": 1,
"host": "10.0.0.9:27017"
},
{
"_id": 2,
"host": "10.0.0.10:27017"
}
]
})
# 启动 mongos 节点
# --configdb 指向配置集群
# 集群URI:<replicate_name>/host:port,host:port,host:port
# config/10.0.0.8:27017,10.0.0.9:27017,10.0.0.10:27017
mongos --bind_ip 0.0.0.0 --replSet mongos --logpath /var/log/mongo/mongod.log --port 27017 --fork --configdb config/10.0.0.8:27017,10.0.0.9:27017,10.0.0.10:27017
# 构建 mongos 集群(测验时未构建集群,原理一致)
rs.initiate({
"_id": "mongos",
"members": [
{
"_id": 0,
"host": "10.0.0.11:27017"
},
{
"_id": 1,
"host": "10.0.0.12:27017"
},
{
"_id": 2,
"host": "10.0.0.13:27017"
}
]
})
# 添加分片
sh.addShard("replicate/10.0.0.2:27017,10.0.0.3:27017,10.0.0.4:27017")
sh.addShard("shard/10.0.0.5:27017,10.0.0.6:27017,10.0.0.7:27017")
# 启用分片
sh.enableSharding("demo")
# 指定分片集合,并指定片键
sh.shardCollection("demo.order", {"_id": "hashed"})
# 查看分片集群状态
sh.status()