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实例,作为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】windows平台搭建Mongo数据库复制集(类似集群)(转)
- MongoDB:mongodb的主从复制(二) 副本集
- MongoDB主从复制,副本集, Sharding
- MongoDB实现复制集
- MongoShake——基于MongoDB的跨数据中心的数据复制平台
- 学习MongoDB--(9-1):复制(主从复制--基本示例和原理介绍)
- 学习MongoDB--(9-3):复制(主从复制--进阶2)
- MongoDB学习笔记(六)--复制集+sharding分片 && 总结
- 8天学通MongoDB——第五天 主从复制
- MongoDb(3)-复制集
- 利用Mongodb的复制集搭建高可用分片,Replica Sets + Sharding的搭建过程
- 6.非关系型数据库(Nosql)之mongodb:集群(主从复制)
- mongodb不同版本实现主从复制
- mongodb学习之:主从复制
- Mongodb带验证的主从复制架构
- mongodb的导入导出、复制表
- mongodb复制集搭建
- MongoDB Replica Sets (复制集)
- MongoDB Replica Sets(复制集)部署