Mongodb 分片 + 复制集
来源:互联网 发布:初学者mint和ubuntu 编辑:程序博客网 时间:2024/05/28 11:50
任务:创建一个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 分片 + 复制集
- MongoDB实现分片复制集
- Mongodb运行时添加分片复制集
- MongoDB分片集群与复制集
- MongoDB 复制集和分片问题
- MongoDB分片集群与复制集
- Windows搭建MongoDB分片以及复制集
- MongoDB副本集复制和分片
- mongodb复制和分片
- Mongodb数据分片的维护(新增分片到已有的分片复制集)
- mongodb分布式部署 多分片部署 复制集
- MongoDB架构——复制集+sharding分片体
- 基于分片和复制集的三节点mongodb集群
- mongodb 运行时添加新的分片复制集
- mongodb 在线添加新的分片复制集 后续
- mongodb 复制集+ 分片(转载博客园)
- mongodb复制集和分片混合集群搭建(原创)
- MongoDB 主从复制,副本集,分片....(八)
- JFinal快速上手及注意事项
- 微信小程序试水
- mongoDB 安装以及在Java中的使用
- JAVA中转义字符
- C++ 图的遍历(深度优先遍历)
- Mongodb 分片 + 复制集
- 视频直播流程以及ffmpeg编解码流程
- JMeter-参数化
- 按层打印二叉树
- phpunit学习笔记2
- NYOJ 师傅又被妖怪抓走了 双向BFS
- 数据库知识点---聚合函数
- 编译原理学习笔记---FIRST和FOLLOW
- zygote 和 app 的启动过程