首先下载安装程序 官方下载地址
- 搭建configserver
由于configserver的重要性,强烈推荐由至少3台机器组成configserver副本集- 解压并创建配置文件,并复制到3台机器上
-
配置文件中增加
配置文件
sharding:
clusterRole: configsvr -
启动所有实例,并登录其中一台机器,运行mongo程序(如果需要打开登录认证功能,参见:为MongoDB添加身份验证)
-
执行初始化副本集脚本
示例
rs.initiate({
_id: "candao_qc_config",
configsvr: true,
members: [
{ _id : 0, host : "10.200.102.36:27117" ,"priority":100 },
{ _id : 1, host : "10.200.102.41:27117","priority":1 },
{ _id : 2, host : "10.200.102.45:27117","priority":1 }
]
}) - 等待初始化完成,此时configserver副本集就搭建完成了
-
搭建shard server
每个shard负责存储集群的一部分数据,如果数据损坏,则会导致这部分数据丢失,重要性不言而喻,同样强烈推荐由至少3台机器组成副本集
搭建副本集不在赘述,参见:副本集的搭建,与副本集不同的是,需要在每台机器的配置文件中添加如下配置:配置示例
sharding:
clusterRole: shardsvr想要分多少个片,就按述方法配置多少个副本集
- 配置mongos程序
-
创建mongos.conf
配置示例
net:
port: 27017
##日志文件
systemLog:
destination: file
path: "mongod.log"
logAppend: true
processManagement:
##以后台进程运行
fork: true
sharding:
configDB: candao_qc_config/10.200.102.36:27117,10.200.102.45:27117,10.200.102.41:27117 -
启动mongos进程./mongos -f mongos.conf (通常可以启动多个,可以将mongos进程部署在部署项目的机器上)
-
-
在mongos上将配置好的分片副本集加入分片集群 (直接在bin下:./mongo)
配置示例
sh.addShard( "candao_qc_shard1/10.200.102.31:27027");
sh.addShard( "candao_qc_shard2/10.200.102.31:27028");
sh.addShard( "candao_qc_shard3/10.200.102.31:27029"); - 将要分片的数据库开启分片 sh.enableSharding("datacenter_qc")
- 将表进行分片 sh.shardCollection("datacenter_qc.order", { "createTime":1, "brandId":1 } )
至此,分片搭建完成,如果刚才分片的集合中有数据,此时需要等待后台进程将数据按照片键均匀地迁移到其他机器上
- 在工具或者程序中,需要用可读可写账号进行访问mongo的数据,这个时候,需要在configserver中进行创建原来的集群中的可读、可写的账号。