由于MongoDB不断更新,因此集群搭建的方法最终以MongoDB官网为准。本文提供一个较为清晰的搭建思路
分片集群搭建的方法同MongoDB复制集搭建基本一致。
# 数据保存到哪
storage:
dbPath: D:\Developer\MongoDB666\mongodb-config-27018\data
journal:
enabled: true
# engine:
# mmapv1:
# wiredTiger:
# 日志保存到哪
systemLog:
destination: file
logAppend: true
path: D:\Developer\MongoDB666\mongodb-config-27018\log\mongod.log
# 绑定的IP和端口号
net:
port: 27018
bindIp: 127.0.0.1
# 复制集的名称
replication:
replSetName: 'it666'
# 复制集的作用:告诉系统当前的这台服务器是一台配置服务器
sharding:
clusterRole: configsvr
mongodb-config-27019、mongodb-config-27020这两台服务器的配置方法同2.0,2.1.
管理员权限运行终端, 分别打开三台配置服务器的bin目录。分别执行如下指令
mongod --config D:\Developer\MongoDB666\mongodb-config-27018\bin\mongo.config --serviceName "MongoDB27018" --serviceDisplayName "MongoDB27018" --install
mongod --config D:\Developer\MongoDB666\mongodb-config-27019\bin\mongo.config --serviceName "MongoDB27019" --serviceDisplayName "MongoDB27019" --install
mongod --config D:\Developer\MongoDB666\mongodb-config-27020\bin\mongo.config --serviceName "MongoDB27020" --serviceDisplayName "MongoDB27020" --install
mongo --host 127.0.0.1 --port 27018
mongo --host 127.0.0.1 --port 27019
mongo --host 127.0.0.1 --port 27020
rs.initiate({
_id: 'it666',
configsvr: true,
members: [
{_id: 0, host: '127.0.0.1:27018'},
{_id: 1, host: '127.0.0.1:27019'},
{_id: 2, host: '127.0.0.1:27020'}]
})
# 数据保存到哪
storage:
dbPath: D:\Developer\MongoDB666\mongodb-shard-27021\data
journal:
enabled: true
# engine:
# mmapv1:
# wiredTiger:
# 日志保存到哪
systemLog:
destination: file
logAppend: true
path: D:\Developer\MongoDB666\mongodb-shard-27021\log\mongod.log
# 绑定的IP和端口号
net:
port: 27021
bindIp: 127.0.0.1
# 复制集名称
replication:
replSetName: 'itzb'
# 复制集的作用:是一个分片服务器
sharding:
clusterRole: shardsvr
mongodb-shard-27022、mongodb-config-27023这两台服务器的配置方法同3.0,3.1.
管理员权限运行终端, 分别打开三台分片服务器的bin目录。分别执行如下指令
mongod --config D:\Developer\MongoDB666\mongodb-shard-27021\bin\mongo.config --serviceName "MongoDB27021" --serviceDisplayName "MongoDB27021" --install
mongod --config D:\Developer\MongoDB666\mongodb-shard-27022\bin\mongo.config --serviceName "MongoDB27022" --serviceDisplayName "MongoDB27022" --install
mongod --config D:\Developer\MongoDB666\mongodb-shard-27023\bin\mongo.config --serviceName "MongoDB27023" --serviceDisplayName "MongoDB27023" --install
mongo --host 127.0.0.1 --port 27021
mongo --host 127.0.0.1 --port 27022
mongo --host 127.0.0.1 --port 27023
rs.initiate({
_id: 'itzb',
members: [
{_id: 0, host: '127.0.0.1:27021'},
{_id: 1, host: '127.0.0.1:27022'},
{_id: 2, host: '127.0.0.1:27023'}]
})
# 日志保存到哪
systemLog:
destination: file
logAppend: true
path: D:\Developer\MongoDB666\mongodb-router-27024\log\mongod.log
# 绑定的IP和端口号
net:
port: 27024
bindIp: 127.0.0.1
# 配置服务器地址
sharding:
configDB: it666/127.0.0.1:27018,127.0.0.1:27019,127.0.0.1:27020
管理员权限运行终端, 打开路由服务器的bin目录,执行如下指令:
mongos --config D:\Developer\MongoDB666\mongodb-router-27024\bin\mongo.config --serviceName "MongoDB27024" --serviceDisplayName "MongoDB27024" --install
mongo --host 127.0.0.1 --port 27024
sh.addShard( "itzb/127.0.0.1:27021")
sh.addShard( "itzb/127.0.0.1:27022")
sh.addShard( "itzb/127.0.0.1:27023")
sh.enableSharding("demo")
默认情况下,集合中的数据是不会分片,会默认保存到主分片中。
sh.shardCollection("demo.user",{'age':1})
sh.shardCollection("demo.user",{'name':hashed})