设为首页 加入收藏

TOP

MongoDB集群架构之分片架构(六)
2018-10-23 00:06:06 】 浏览:845
Tags:MongoDB 集群 架构 分片
ff2bb601482c"), "name" : "a", "shard" : 1000 }


{ "_id" : ObjectId("5bb236abf116ff2bb601482d"), "name" : "a", "shard" : 1001 }


{ "_id" : ObjectId("5bb236b3f116ff2bb601482e"), "name" : "a", "shard" : 9999 }


> exit


结果表明,分片成功。


也可以直接通过config数据库查看分片情况和标签情况。


mongos> use config;


switched to db config


mongos> db.shards.find();


{ "_id" : "shard0000", "host" : "11.1.1.11:27017", "state" : 1, "tags" : [ "tag1" ] }


{ "_id" : "shard0001", "host" : "11.1.1.11:27018", "state" : 1, "tags" : [ "tag2" ] }


{ "_id" : "shard0002", "host" : "11.1.1.11:27019", "state" : 1, "tags" : [ "tag3" ] }


mongos> db.tags.find();


{ "_id" : { "ns" : "test.t3", "min" : { "shard" : { "$minKey" : 1 } } }, "ns" : "test.t3", "min" : { "shard" : { "$minKey" : 1 } }, "max" : { "shard" : 100 }, "tag" : "tag1" }


{ "_id" : { "ns" : "test.t3", "min" : { "shard" : 100 } }, "ns" : "test.t3", "min" : { "shard" : 100 }, "max" : { "shard" : 1000 }, "tag" : "tag2" }


{ "_id" : { "ns" : "test.t3", "min" : { "shard" : 1000 } }, "ns" : "test.t3", "min" : { "shard" : 1000 }, "max" : { "shard" : { "$maxKey" : 1 } }, "tag" : "tag3" }


6.分片的优点


Mongodb的分片集群架构具有以下的优点:


在分片集群架构中,可以轻松实现多点写入。


在分片架构中,可以有多个路由节点,因此,连接到任意一个路由节点均可以提供数据的读写功能。


在分片集群架构中,可以提供写数据的负载均衡。


在分片结构中,数据实际存储在分片节点中,而一个集群中可以有多个分片节点,而集合中的数据实际存储到哪一个节点是有分片的键来决定的,因此可以通过分片键来调整数据的存储位置,从而实现一定的写均衡的功能。


7.分片的缺点


Mongodb的分片集群架构具有以下的缺点:


在分片集群架构中,存在分片节点的单点故障问题。


每一份数据仅仅保存在某个特定的分片服务器节点中,如果这个分片分片节点宕机,则这部分数据无法读取。解决办法稍后给出。


在分片集群架构中,如果需要读取完整的数据,只能通过路由节点读取。而数据实际存储在分片节点中,因此其中必然会多出一些节点间的网络数据传输的消耗。


8.分片集群总控脚本


由于集群中节点个数和种类比较多,编写了一个总控脚本,用于简化集群的启动和停止以及状态查看操作。


完整脚本内容如下:


[root@coe2coe data]# cat cluster.sh


#!/bin/bash


##################################################################


#   FileName    :startcluster.sh


#   Author      : coe2coe@qq.com


#   Created     :2018-10-02


#   Description :http://www.cnblogs.com/coe2coe/


#################################################################


start()


{


IP=$(ip addr |grep inet |grep brd |awk -F' ' '{ print $2}'|awk -F'/' '{print $1}')


if [ "$IP" == "" ]


then


  echo -e "Failed to get IP on this host."


  exit 1


fi


CONFIG_PORTS="27117 27118 27119"


SHARD_PORTS="27017 27018 27019"


ROUTE_PORTS="27217 27218 27219"


CONFIG_ADDRESSES="$IP:27117,$IP:27118,$IP:27119"


echo -e "Starting  mongodb  cluster at {$IP}....."


echo -e "Starting config nodes @{$CONFIG_PORTS} ..." 


/data/mongo/data/config/startconfig.sh  $CONFIG_PORTS&nb

首页 上一页 3 4 5 6 7 下一页 尾页 6/7/7
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇hql优化教程 下一篇MySQL递归查询_函数语法检查_GROU..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目