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

MongoDB架构——复制集+sharding分片体

2015-07-06 12:48 751 查看
本篇博客讲解为了满足实际生产环境所需的高可靠性而产生的“复制集+sharding分片”解决方案

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!**
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息