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

本篇博客讲解为了满足实际生产环境所需的高可靠性而产生的“复制集+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!**

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值