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

来源:互联网 发布:linux退出登录命令 编辑:程序博客网 时间:2024/06/16 00:15

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