您的位置:首页 > 数据库 > Mongodb

Mongodb 分片 + 复制集

2017-05-07 11:45 176 查看
任务:创建一个Mongodb集群,采用分片(shard)加复制集(replication)。

一、规划

实例:

三个mongodb实例,作为configserver使用

三个mongodb实例,作为分片1使用,其中一个为主实例,另外两个为副本集,命名为:rs1

三个mongodb实例,作为分片2使用,其中一个为主实例,另外两个为副本集,命名为:rs2

一个mongos(路由)实例

端口:

10000 - 10002 作为configserver的mongodb实例端口

20000 - 20002 作为分片1的实例端口

30000 - 30002 作为分片1的实例端口

27017 作为mongos的端口

路径:

按照实例创建不同的文件夹,用于存放数据,另外config文件夹存放配置文件

mkdir /data/mongodata/{10000,10001,10002,20000,20001,20002,27017,30000,30001,30002,config} 

二、创建config server

编辑配置文件

vi /data/mongodata/config/10000.cnf

#####################################
configsvr=true
dbpath=/data/mongodata/10000#数据文件路径
logpath=/data/mongodata/10000/10000db.log#日志文件路径
port=10000#实例端口
smallfiles=true
fork=true

#####################################

启动端口10000的mongodb 实例

mongod -f  /data/mongodata/config/10000.cnf

 

以同样的方式启动10001,10002两个实例,注意配置文件需要修改端口和路径,启动完成后可以看到三个mongod实例

ps -ef | grep mongo

 
二、创建副本集rs1

创建配置文件

vi /data/mongodata/config/20000.cnf

##################################### 
replSet=rs1#副本集名称,这个很重要,一定要和别的地方对上
dbpath=/data/mongodata/20000 #数据文件路径
logpath=/data/mongodata/20000/20000db.log #日志文件路径
port=20000
smallfiles=true
fork=true
#####################################

启动端口20000的mongodb实例

mongod -f /data/mongodata/config/20000.cnf

 

以同样的方式启动20001,20002端口的两个mongodb实例。

启动成功后进入20000实例,并切换到admin数据库

mongo --port 20000

>use admin

将另外两个实例添加到副本集rs1里。

rsconf ={_id:'rs1',members:[{_id:0,host:'127.0.0.1:20000'},{_id:1,host:'127.0.0.1:20001'},{_id:2,host:'127.0.0.1:20002'},]}

初始化副本集rs1

rs.initiate(rsconf)

三、创建副本集rs2

以创建rs1的方式创建rs2,注意修改对应的参数即可。

四、创建mongos实例,用于管理分片

编辑配置文件

vi /data/mongodata/config/27017.cnf

#####################################

configdb=127.0.0.1:10000,127.0.0.1:10001,127.0.0.1:10002
logpath=/data/mongodata/27017/27017db.log
port=27017
fork=true
#####################################

启动mongos

mongos -f 27017.cnf

五、将两个副本集添加到分片集群中

进入mongos,执行sh.addShard命令

mongos>sh.addShard("rs1/127.0.0.1:20000")
mongos> sh.addShard("rs2/127.0.0.1:30000")

 
添加需要分片的数据库和表

sh.enableSharding("Enson")

sh.shardCollection("Enson.dz",{"sn":1})

插入100万行数据测试

for(var i =1; i <= 1000000; i++) db.dz.insert(sn:i,name:"verylonggggggggggggggggggggggggggggg") 

插入完成后使用db.dz.stat()检查结果集是否分片到rs1和rs2上。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mongodb 集群