MongoDB架构——复制集+sharding分片体
2015-07-06 12:48
751 查看
本篇博客讲解为了满足实际生产环境所需的高可靠性而产生的“复制集+sharding分片”解决方案
shard:使用复制集,确保备份
config:使用N个配置服务器,确保元数据完整性
mongos:使用N个路由进程,实现负载平衡,提高客户端接入性能
在ServerA上启动shard1所用到的服务节点1:
ServerB上启动shard1所用节点2,代码和上面相似,不再赘述
初始化复制集:
因为没有多ip地址的缘故,小可只能完成单机初始化,这样的多host情况并不能完成,不过代码原理是一样的
2.配置shard2的复制集,原理和shard1一样
激活数据库和集合分片功能:
验证Sharding正常工作:
(1)片
(2)数据库
(3)块
块信息保存在chunks集合中:
2.分片指令
(1)获得集合概要
(2)删除片
**小结:
至此MongoDB的大部分知识框架都介绍得差不多了,当然想作为一个合格的DBA一定要多操作,多联系,结合实际。最后的一两篇博客中,小可将给小伙伴们讲解Java对mongoDB的基本操作实例,将开发技术和数据库结合,从而完成特定的系统开发。I’m here,all the time!**
shard:使用复制集,确保备份
config:使用N个配置服务器,确保元数据完整性
mongos:使用N个路由进程,实现负载平衡,提高客户端接入性能
一.创建数据目录
创建文件shard1_1,shard2_1,config,shard1_2,shard2_2二.配置复制集
1.配置shard1所用到的复制集在ServerA上启动shard1所用到的服务节点1:
ServerB上启动shard1所用节点2,代码和上面相似,不再赘述
初始化复制集:
因为没有多ip地址的缘故,小可只能完成单机初始化,这样的多host情况并不能完成,不过代码原理是一样的
2.配置shard2的复制集,原理和shard1一样
三.配置多台Config Server
在ServerA上启动Config Server服务:>mongod --configsvr --dbpath=... --port=20000 --logpath=... --logappend //在ServerB上启动同理
四.配置多台mongos
在ServerA上启动mongos服务:>mongos --configdb 192.168.1.50:20000,192.168.1.51:20000 --port=30000 --chunkSize=1 --logpath=... --logappend //ServerB上同理
五.配置Shard Cluster
连接到其中一台机器的端口30000的mongos进程,并切换到admin数据库进行配置:>mongo --port=30000 >use admin >db.runCommand({addshard:"shard1\192.168.1.50:27017,192.168.1.51:27017"}) >db.runCommand({addshard:"shard2\192.168.1.50:27017,192.168.1.51:27017"})
激活数据库和集合分片功能:
>db.runCommand({enablesharding:"test"}) >db.runCommand({shardcollection:"test.users",key:{_id:1}})
验证Sharding正常工作:
>mongo --port=30000 >db.users.status()
六.管理分片
1.配置集合(1)片
>db.shards.find() //查看shards集合中所有的片
(2)数据库
>db.databases.find() //含有在片上的数据库列表和一些相关信息 //结果出现partitioned:true表明有分片功能
(3)块
块信息保存在chunks集合中:
>db.chunks.find() //查看数据库怎么切分到集合的
2.分片指令
(1)获得集合概要
>db.printShardingStatus()
(2)删除片
>db.runCommand({"removeshard":"192.168.1.50:27017"})
**小结:
至此MongoDB的大部分知识框架都介绍得差不多了,当然想作为一个合格的DBA一定要多操作,多联系,结合实际。最后的一两篇博客中,小可将给小伙伴们讲解Java对mongoDB的基本操作实例,将开发技术和数据库结合,从而完成特定的系统开发。I’m here,all the time!**