工具/原料
我的环境:CentOS 7+ mongo 2.0.9
方法/步骤
1
安装mongo:
将mongo安装文件上传到 /home下并解压(注:mongo解压后即可使用)
# tar -zxvf mongodb-linux-x86_64-2.0.9.tar //解压mongo
# mv mongodb-linux-x86_64-2.0.9 mongodb //修改文件夹名为mongodb
2
创建目录:
# mkdir -p /home/config
# mkdir -p /home/data/shard1
# mkdir -p /home/data/shard2
# mkdir -p /home/mongologs
3
创建分片配置文件1
# cd /home/config
# touch shard1.conf
# vi shard1.conf
文件内容如下:
粘贴下述内容后按ESC键,然后输入:wq保存退出
# /home/config/shard1.conf
dbpath=/home/data/shard1
directoryperdb = true
shardsvr = true
replSet = shard1
port = 20001
oplogSize = 100
pidfilepath = /home/data/shard1/mongodb.pid
logpath = /home/mongologs/shard1.log
logappend = true
profile = 1
slowms = 5
fork = true
4
创建分片配置文件2
# cd /home/config
# touch shard2.conf
# vi shard2.conf
文件内容如下:
粘贴下述内容后按ESC键,然后输入:wq保存退出
# /home/config/shard2.conf
dbpath=/home/data/shard2
directoryperdb = true
shardsvr = true
replSet = shard2
port = 20002
oplogSize = 100
pidfilepath = /home/data/shard2/mongodb.pid
logpath = /home/mongologs/shard2.log
logappend = true
profile = 1
slowms = 5
fork = true
5
启动分片储存节点:
# /home/mongodb/bin/mongod -f /home/config/shard1.conf
# /home/mongodb/bin/mongod -f /home/config/shard2.conf
查看mongod是否启动成功
# ps -ef|grep mongo
出现如图内容表示启动成功
mongo 分片Replica Sets+Sharding架构
6
另外两台服务器重复如上步骤
7
选择其中一台做mongos服务器,在该服务器上执行:(该服务器已创建并启动上面步骤的2个分片)
创建目录:# mkdir -p /home/data/config
创建配置文件:
# cd /home/config
# touch config.conf
# vi config.conf
文件内容如下:
# cat /home/config/config.conf
pidfilepath = /home/data/config/mongodb.pid
dbpath =/home/data/config
directoryperdb = true
configsvr = true
port = 20000
logpath =/home/mongologs/config.log
logappend = true
fork = true
粘贴下述内容后按ESC键,然后输入:wq保存退出
8
继续如上步骤
# cd /home/config
# touch mongos.conf
# vi mongos.conf
文件内容如下:
# cat /home/config/mongos.conf
configdb = 192.168.1.151:20000 //需要根据你的的实际IP地址所改变
port = 30000
chunkSize = 1 //单位mb生成环境请使用 100 或删除,删除后默认是64
logpath =/home/mongologs/mongos.log
logappend = true
fork = true
粘贴下述内容后按ESC键,然后输入:wq保存退出
启动配置节点和路由节点
# /home/mongodb/bin/mongod -f /home/config/config.conf
# /home/mongodb/bin/mongos -f /home/config/mongos.conf
查看mongod、mongos、config是否启动成功
# ps -ef|grep mongo
mongo 分片Replica Sets+Sharding架构
配置mongodb replica set节点
shard1 port 20001配置
连接server1操作
# /home/mongodb/bin/mongo --port 20001
> use admin
> config = {_id:"shard1",members:[
{_id: 0, host:"192.168.1.131:20001",priority:1},
{_id: 1, host:"192.168.1.141:20001",priority:2},
{_id: 2, host:"192.168.1.151:20001",arbiterOnly:true },
]
};
执行完成如图
mongo 分片Replica Sets+Sharding架构
> rs.initiate(config);
执行完上述命令需要等待30秒-1分钟的时间
> rs.status();
查看当前副本集的情况,和下图一样证明配置成功
mongo 分片Replica Sets+Sharding架构
shard2 port 20002配置
连接server2操作
# /home/mongodb/bin/mongo --port 20002
> use admin
> config = {_id:"shard2",members:[
{_id: 0, host:"192.168.1.131:20002", priority:2},
{_id: 1, host:"192.168.1.141:20002", priority:1 },
{_id: 2, host:"192.168.1.151:20002", arbiterOnly:true },
]
};
执行完成如下图
mongo 分片Replica Sets+Sharding架构
> rs.initiate(config);
执行完上述命令需要等待30秒-1分钟的时间
> rs.status();
查看当前副本集的情况,和下图一样证明配置成功
mongo 分片Replica Sets+Sharding架构
mongo路由结点配置
连接mongos服务器上的mongos服务进行配置
# /home/mongodb/bin/mongo --port 30000
mongos> use admin //切换到admin库
mongos>db.runCommand({addshard:"shard1/192.168.1.131:20001,192.168.1.141:20001",name:"shard1",maxsize:20480}); //添加分片shard1
mongos>db.runCommand({addshard:"shard2/192.168.1.131:20002,192.168.1.141:20002",name:"shard2",maxsize:20480}); //添加分片shard2
db.runCommand({listshards : 1}); //查看分片信息
mongos> printShardingStatus() //打印分片信息
到这儿,replica set + shard功能就配置好了,注意:虽然配置好了,但是还要声明库和表要进行分片。
声明库和表要分片:
连接mongos服务器上的mongos服务进行配置
# /home/mongodb/bin/mongo --port 30000
mongos> use admin //切换到admin库
mongos > db.runCommand({enablesharding:"test"}); //声明test库允许分片
mongos>db.runCommand({shardcollection:"test.users",key:{id:1}});//声明users表要分片
测试脚本
mongos> use test //切换到test
mongos> for (var i = 1; i <= 20000; i++) db.users.save({id:i,name:"12345678",sex:"male",age:27,value:"test"}); //插入2W条数据
测试结果
mongos> db.users.stats(); //查看users表的存储信息
如下图可以看到我插入的2W条数据已经分别存储在了shard1 和shard2两个分片上
mongo 分片Replica Sets+Sharding架构
如果帮到了你请给个赞