1.linux环境
主机 | OS | 备注 |
192.168.1.9 | CentOSLinux release 7.3.1611 | 普通PC |
192.168.1.6 | CentOSLinux release 7.3.1611 | 普通PC |
2.安装mongodb
版本:mongodb-linux-x86_64-amazon-3.4.7.tgz)
下载地址:https://www.mongodb.com/download-center?jmp=nav#community
安装:分别在两台机器上安装相同版本的mongodb,安装路径为:/usr/local/mongodb-3.4.7/
tar-zxvf mongodb-linux-x86_64-amazon-3.4.7.tgz
更换名字
mvmongodb-linux-x86_64-amazon-3.4.7 mongodb-3.4.7
3.设置并启动配置服务器(192.168.1.6:10000)
创建相关路径
#建立mongos目录
mkdir-p /mongodbData/mongos/log/
#建立configserver 数据文件存放目录
mkdir-p /mongodbData/config/data
#建立configserver 日志文件存放目录
mkdir-p /mongodbData/config/log/
#建立shard1数据文件存放目录
mkdir-p /mongodbData/shard1/data
#建立shard1日志文件存放目录
mkdir-p /mongodbData/shard1/log/
#建立shard2数据文件存放目录
mkdir-p /mongodbData/shard2/data
建立shard2日志文件存放目录
mkdir-p /mongodbData/shard2/log/
#建立shard3数据文件存放目录
mkdir-p /mongodbData/shard3/data
#建立shard3日志文件存放目录
mkdir-p /mongodbData/shard3/log/
#建立shard4数据文件存放目录
mkdir-p /mongodbData/shard4data
#建立shard4日志文件存放目录
mkdir-p /mongodbData/shard4/log/
4.服务器
(1)配置服务器
启动配置服务器
./mongod--configsvr --replSet cfgReplSet --dbpath /mongodbData/config/data--port 21000 --logpath /mongodbData/config/log/config.log –fork
备注:第二次启动时日志是追加(--logappend)(下同)
./mongod--configsvr --replSet cfgReplSet --dbpath /mongodbData/config/data--port 21000 --logpath /mongodbData/config/log/config.log --logappend--fork
连接到配置服务器上
./mongo--host 192.168.1.6 --port 21000
创建配置服务器副本集
rs.initiate({_id:"cfgReplSet",configsvr:true,members:[{_id:0,host:"192.168.1.6:21000"}]})
备注:
关闭方法:
./mongod --shutdown --dbpath /mongodbData/shard4/data
(其他类似)
(2)分片
启动分片1(192.167.1.9:22001)
./mongod--shardsvr --replSet shard1ReplSet --port 22001 --dbpath/mongodbData/shard1/data --logpath /mongodbData/shard1/log/shard1.log–fork
连接分片1服务器(192.168.1.9:22001)
./mongo--host 192.168.1.9 --port 22001
创建配置分片1副本集
rs.initiate({_id:"shard1ReplSet",members:[{_id:0,host:"192.168.1.9:22001"}]})
启动分片2(192.168.1.9:22002)
./mongod--shardsvr --replSet shard2ReplSet --port 22002 --dbpath/mongodbData/shard2/data --logpath /mongodbData/shard2/log/shard2.log--fork
连接分片2服务器(192.168.1.9:22002)
./mongo--host 192.168.1.9 --port 22002
创建配置分片2副本集
rs.initiate({_id:"shard2ReplSet",members:[{_id:0,host:"192.168.1.9:22002"}]})
启动分片3(192.167.1.6.22003)
./mongod--shardsvr --replSet shard3ReplSet --port 22003 --dbpath/mongodbData/shard3/data --logpath /mongodbData/shard3/log/shard3.log--fork
连接分片3服务器(192.168.1.6:22003)
./mongo--host 192.168.1.6 --port 22003
创建配置分片3副本集
rs.initiate({_id:"shard3ReplSet",members:[{_id:0,host:"192.168.1.6:22003"}]})
启动分片4(192.167.1.6.22004)
./mongod--shardsvr --replSet shard4ReplSet --port 22004 --dbpath/mongodbData/shard4/data --logpath /mongodbData/shard4/log/shard4.log–fork
连接分片4服务器(192.168.1.9:22004)
./mongo--host 192.168.1.6 --port 22004
创建配置分片4副本集
rs.initiate({_id:"shard4ReplSet",members:[{_id:0,host:"192.168.1.6:22004"}]})
(3)路由服务器
启动路由服务器(192.168.1.6:20000)
./mongos--configdb cfgReplSet/192.168.1.6:21000 --port 20000 --logpath/mongodbData/mongos/log/mongos.log --fork
登陆到路由服务器
./mongo--host 192.168.1.6 --port 20000
添加分片到集群(注意关闭防火墙,外网除外)
添加分片1(192.168.1.9:22001)
sh.addShard("shard1ReplSet/192.168.1.9:22001")
添加分片2(192.168.1.9:22002)
sh.addShard("shard2ReplSet/192.168.1.9:22002")
添加分片3(192.168.1.6:22003)
sh.addShard("shard3ReplSet/192.168.1.6:22003")
添加分片4(192.168.1.6:22004)
sh.addShard("shard4ReplSet/192.168.1.6:22004")
检查配置数据库的shards集合是否生效
db.getSiblingDB("config").shards.find()
创建数据库
usetest
创建集合
db.createCollection("testCollect")
创建索引
db.testCollect.createIndex({"deviceId":1,"gnssTime":1},{sparse:true,unique:false})
设置要分片的数据库为test
sh.enableSharding("test")
检查数据库主片的地址并查看是否分区(是否启动分区)
db.getSiblingDB("config").databases.find()
指定要被分片的集和的片键
sh.shardCollection("test.testCollect",{"deviceId":1,"gnssTime":1})
用配置数据库来检查配置信息
db.getSiblingDB("config").collections.findOne()
分片一个空集合后查看第一个分片
db.testCollect.getIndexes()
5.测试
写入数据(python脚本逐条写入812条记录)
写入前时间:2017-08-1614:19:33.827402
写入后时间:2017-08-1614:19:34.139188
耗时:311786微秒=311.786毫秒
检查分片
db.testCollect.stats()
切换到配置数据库
useconfig
检查数据块的数量
db.chunks.count()
查看块的分配情况
db.chunks.find()
查看更详细的信息
sh.status()
6.其他
如果mongod启动不成功:
删除data路径下的.lock文件
执行mongod–repair
重启mongod